λμ΄μ κΈ°λ€λ¦¬μ§ μμλ λλ λ°°μΉ λ¬΄μ€λ¨ λ°°ν¬
μ§λ ν¬μ€ν
, κ·Έλ¬λκΉ μ°μν νμ λ€μμ μ΄λλ₯Ό λ°μ Spring batch μ λν ν
ν¬μΈλ―Έλμ λ€λ
μλ€. κ·Έ μ€ κ°μ₯ μΈμκΉμλ λΆλΆμ΄ λ°λ‘ 무μ€λ¨ λ°°ν¬
. μ°¨μΌνΌμΌ λ―Έλ£¨λ€ νμκ° μν νμμλ λ°°ν¬λλ§λ€ κ°μ₯ λΆνΈμ λλΌκ³ μμλ λΆλΆμ΄μκΈ°λ νκ³ , κ·Έλ°κ°λ³΄λ€
νλ©° κ°λ
λ§ μκ³ λμ΄κ°κΈ°μ 무μΈκ° μμ¬μ μ°λ € μ§μ 무μ€λ¨ λ°°ν¬λ₯Ό ν μ μλλ‘ κ΅¬μ±μ ν΄λ³΄κ³ ν
μ€νΈκΉμ§ ν΄λ³΄κ³ μ νλ€.
μν© λ° λ¬Έμ μ
리λ μ€ μλ²μ Jenkinsκ° μ€μΉλμ΄ μκ³ , Spring batch λͺ¨λμ μ€νμν€κ³ μλ€. μλμΌλ‘ μ€νμ νκ±°λ, Jenkins RestApiλ₯Ό μ΄μ©ν΄μ μ€νμ ν μ μμ§λ§ μ£Όλ‘ μ ν΄μ§ μκ° μ¦, μ€μΌμ₯΄λ§μ μν΄ μ€νλκ³€ νλ€. μ€μΌμ₯΄λ§μ κ°μ₯ μμ λ¨μλ 1λΆλ¨μ λ°°μΉλ μκΈ° λλ¬Έμ 24μκ° λ©μΆμ§ μκ³ μ€νλκ³ μλ€κ³ 무방νλ€. νμ§λ§ λ°°μΉ λͺ¨λμ΄ μμ λκ³ , λ°°ν¬λ₯Ό νκΈ° μν΄μλ λ€μκ³Ό κ°μ μλ리μ€λ‘ μ§νμ΄ λλ€.
- Jenkins μ€μ μ
λκΈ°μ μ€λΉ
λ₯Ό μ€ννμ¬ λμ΄μ Jenkinsμ μν΄ Spring batch λͺ¨λ(μ΄ν Job)μ΄ μ€νλμ§ μλλ‘ νλ€. - μλ‘μ΄ Jobμ λμ΄μ μ€νλμ§ μμ§λ§ μ΄λ―Έ μ€νμ€μ΄μλ Job μ κ°μ λ‘ μ€λ¨μ νκ±°λ Job μ΄ λλ λκΉμ§ κΈ°λ€λ¦°λ€.
- μ€νμ€μΈ Jobμ΄ μμ κ²½μ° μ΄μ λ°°ν¬λ₯Ό μ§ννλ€.
- λ°°ν¬κ° μλ£λλ©΄ Jenkins μ€μ μ
λκΈ°μ μ€λΉ
λ₯Ό ν΄μ νλ€.

μΆμ² : https://m.post.naver.com/viewer/postView.nhn?volumeNo=14100660&memberNo=2032633
μ€νλλ Jobμ μ€λ¨νμ§ λͺ»νλ μν© μ¦, μ€νμ€μ μ€λ¨νλ©΄ νΈλμμ
μ΄ κΉ¨μ Έ 무쑰건 κΈ°λ€λ €μΌλ§ νλ μν©μ΄λΌλ©΄ λ°°ν¬ λν κ³μ μ§μ°λ μ λ°μ μλ μν©μΈ κ²μ΄λ€. Spring bootμ java config λ₯Ό νμ©νκ³ λ± jar
νμΌ νλλ₯Ό μ€ννλ λ°©μμ΄λΌλ©΄ jar
νμΌμ λ°κΏμΉκΈ° νλ μμΌλ‘ κ³ λ―Όμ ν΄λ³Όμλ μμκ² κ°λ€. νμ§λ§ Legacy μ½λκ° μμ§ μ‘΄μ¬νμ¬ μΌλ° Spring μ xml λ‘ config νλ λ°©μμΌλ‘ μ΄μμ€μ΄λΌ jar
νμΌ νλλ§ λ°κΏμΉκΈ° νκΈ°μ λ¬΄λ¦¬κ° μλ μν©.
μμ΄μμ²λΌ μ΄λμμλ μ¬μ©μ΄ κ°λ₯ν λ§λ³ν΅μΉμ½ κ°μ λ°©λ²μ μλ€. μΈμ λ κ·Έλ¬λ― νμ¬ μμ€ν (xml config λ°©μ)μ κ°μ₯ μ΅μ νλ λ°©λ², κ·Έλ¦¬κ³ java config λ°©μμμλ μ¬μ©μ΄ κ°λ₯ν κ² κ°μ λ°©λ²μ μκ°ν΄ 보μλ€.
무μ€λ¨ λ°°ν¬λ₯Ό κ°λ₯μΌ νλ 3κ°μ§ ν΅μ¬
1. λ°°ν¬λ₯Ό λ§€λ² μλ‘μ΄ κ²½λ‘μ λ°°ν¬νλ€.
κ° νμ¬λ§λ€, κ·Έλ¦¬κ³ μλΉμ€λ§λ€ μ λ§ λ€μν λ°°ν¬ μμ€ν
μ΄ μλ€. κ·Έλ€μ 곡ν΅μ μ μ격μλ²μ νΉμ κ²½λ‘
μ λΉλλ νμΌλ€μ λ°μ΄ λ£μ΄μ€λ€λ κ². μλ리μ€λ λ€μκ³Ό κ°λ€.
- λ°°ν¬ν λλ§λ€ λ³λμ λλ ν 리λ₯Ό μμ±νλ€ μ¬λ³Όλ¦ λ§ν¬λ₯Ό μ°κ²°ν΄μ€λ€.
- λ°°ν¬λ
1
μμ μ°κ²°ν μ¬λ³Όλ¦ λ§ν¬μ λ°°ν¬λλλ‘ μ€μ , κ²°κ΅ λ§€λ² λ§λ€μ΄μ§λ λλ ν 리μ λ°°ν¬κ° λκ² λλ€.
μ¬κΈ°μ μ€μνμ μ “λ°°ν¬ν λλ§λ€ μλ‘μ΄ λλ ν 리μ λ°°ν¬κ° λλ€” μ λ°°ν¬μμλ νμ μ¬λ³Όλ¦ λ§ν¬μλ§ λ°°ν¬λ₯Ό νλ©΄ λκΈ° λλ¬Έμ “λ°°ν¬μμ€ν μ΄ μλ‘ λ§λ€μ΄μ§λ λλ ν 리μ κ²½λ‘λ₯Ό λͺ°λΌλ 무방νλ€"λ μ μ΄λ€.
#!/bin/sh
cd /~~~/deploy/
# μμ λλ ν 리
DIRECTORY_NAME=batch_$(/bin/date +%Y%m%d%H%M%S)
mkdir $DIRECTORY_NAME
μ μ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ©΄ batch_20191012205218 μ κ°μ λλ ν λ¦¬κ° μμ±μ΄ λλ€. μ¬λ³Όλ¦ λ§ν¬ κ΄λ ¨ν΄μλ λ°λ‘ μλ μ΄μ΄μ μ€λͺ νκ² λ€.
2. μ¬λ³Όλ¦ λ§ν¬μ μλ λ§ν¬λ₯Ό μ¦μ λ³κ²½ λ³΄ν΅ μ¬λ³Όλ¦ λ§ν¬ (μ¦, λ°λ‘κ°κΈ°) μ κ²½λ‘λ₯Ό λ³κ²½νκΈ° μν΄μλ μλμ²λΌ μ§μ λ€κ° μμ νλ μμΌλ‘ νμλλ°
$ mkdir directory_a
$ mkdir directory_b
$ ln -s directory_a asdf
$ ll
asdf -> directory_a
directory_a
directory_b
# directory_a μμ directory_b λ‘ λ°κΎΈλ κ²½μ° (μ¬λ³Όλ¦ λ§ν¬ μ체λ₯Ό μμ νκ³ λ€μ μ¬λ³Όλ¦ λ§ν¬ μμ±)
$ rm asdf
$ ln -s directory_b asdf
$ ll
asdf -> directory_b
directory_a
directory_b
μ΄λ κ² λλ©΄ μμ νκ³ ~ λ€μ λ§λ€μ΄μ§λ νμ΄λ°μ λ°°ν¬κ° λκ±°λ μ€νμ΄ λλ μ¦, ν΄λΉ κ²½λ‘μ μμΈμ€ νλ κ²½μ° μ΄μ μ κ²½λ‘λ₯Ό λ°λΌλ³Έλ€κ±°λ μλνλ λ°©μμΌλ‘ μ€νμ΄ λμ§ μλ μν©μ΄ λ°μνλ€. (μ°°λμ νμ΄λ° μ΄μ§λ§ νμλ μ΄λ¬ν λ¬Έμ λ‘ μ΄μ μ κ²½λ‘λ₯Ό λ°λΌλ³΄λ λ¬Έμ κ° λ°μνμλ€.) κ·Έλμ ln μ μ΅μ
μ€μΈ -Tfs
μ΅μ
μΌλ‘ μ¦μ λ³κ²½μ ν΄μ£Όλλ‘ νμ. (ln man μ°Έκ³ )