μ ν¨μ€(jenkins)μ λν΄ μμλ³΄κ³ λ¬΄μ€λ¨ λ°°ν¬ κ³νμ μΈμ보μ
π‘ μ¬λ΄ νλ‘μ νΈμ μ ν¨μ€λ₯Ό μ μ©νμ¬ κΈ°μ‘΄μ κ³ μ μ μΈ λΉλ & λ°°ν¬ λ°©μμμ λ²μ΄λλ κ³Όμ μ κΈ°λ‘νλ €κ³ νλ€.
π€ What is Jenkins?
- μ ν¨μ€(Jenkins)λ μ§μμ μΈ ν΅ν©(Continuous Integration)κ³Ό μ§μμ μΈ λ°°ν¬(Continuous Deployment)λ₯Ό μ§μνλ μ€ν μμ€ μλν λꡬμ΄λ€.
- μννΈμ¨μ΄ κ°λ° κ³Όμ μμ κ°λ°μλ€μ΄ μμ±ν μ½λλ₯Ό μλμΌλ‘ λΉλ, ν μ€νΈ, λ°°ν¬νλ νλ‘μΈμ€λ₯Ό ꡬμΆν μ μλλ‘ λμμ€λ€.
- μ ν¨μ€λ λ€μν νλ¬κ·ΈμΈκ³Ό νμ₯μ±μ μ 곡νμ¬ μ¬μ©μκ° λ€μν κ°λ° νκ²½κ³Ό μꡬ μ¬νμ λ§κ² μ μ©ν μ μλ€.
- μ΄λ₯Ό ν΅ν΄ μννΈμ¨μ΄ κ°λ° νμ νμ§ ν₯μ, κ°λ° μμ°μ± ν₯μ, μ§μμ μΈ ν΅ν© λ° λ°°ν¬λ₯Ό ν¨μ¨μ μΌλ‘ μνν μ μλ€.
π μ ν¨μ€μ μ£Όμ κΈ°λ₯μ λ€μκ³Ό κ°λ€:
μ§μμ μΈ ν΅ν©: κ°λ°μλ€μ΄ μμ±ν μ½λλ₯Ό μ£ΌκΈ°μ μΌλ‘ λΉλνκ³ , ν μ€νΈνμ¬ νμ§μ μ μ§νλ©°, λ²κ·Έλ₯Ό μ‘°κΈ°μ λ°κ²¬ν μ μλ€.
μ§μμ μΈ λ°°ν¬: λΉλλ μννΈμ¨μ΄λ₯Ό μλμΌλ‘ λ°°ν¬νμ¬ μ μνκ³ μμ μ μΈ λ°°ν¬λ₯Ό μ§μνλ€.
μλνλ ν μ€νΈ: λ€μν ν μ€νΈ λꡬμ ν΅ν©νμ¬ μλνλ ν μ€νΈλ₯Ό μννκ³ ν μ€νΈ κ²°κ³Όλ₯Ό λ³΄κ³ νλ€.
νμ₯μ±: λ€μν νλ¬κ·ΈμΈκ³Ό ν΅ν©μ μ§μνμ¬ μ ν¨μ€λ₯Ό λ€λ₯Έ λꡬμ μ°λνμ¬ μ¬μ©ν μ μλ€.
- ex ) slackκ³Ό μ°κ²°νμ¬ λΉλ μ±κ³΅ μ€ν¨ μ¬λΆ μλ 보λ΄κΈ° λ±
λͺ¨λν°λ§ λ° μλ¦Ό: λΉλ λ° λ°°ν¬ μνλ₯Ό λͺ¨λν°λ§νκ³ , μ΄μμ΄ λ°μν κ²½μ° μλ¦Όμ μ 곡νλ€.
π μ 리
μ ν¨μ€λ λ§μ κΈ°μ κ³Ό νλ‘μ νΈμμ λ리 μ¬μ©λλ©°, κ°λ°μλ€μ μμ°μ±μ ν₯μνκ³ μννΈμ¨μ΄ κ°λ° κ³Όμ μ μλννμ¬ μμ μ μ΄κ³ ν¨μ¨μ μΈ κ°λ°μ κ°λ₯νκ² νλ€.
π νμ¬ νλ‘μ νΈ λΉλ νμΌ λ°°ν¬ μ§ν λ°©μ
- λ‘컬μμ μλ² λ³κ²½μ¬ν λ° μΆκ°μ¬νμ μ μ©νλ€.
- λ‘컬μμ κ°μμ λ°©μμΌλ‘ ν μ€νΈλ₯Ό μ§ννλ€.
- λ‘컬 PCμμ λΉλν jar νμΌμ SFTP νλ‘κ·Έλ¨μ ν΅ν΄ μ격 μλ²λ‘ μ μ‘νλ€.
- λ‘컬 PCμμ μ격 μλ²λ‘ SSH μ μμ νλ€.
- μ격 μλ²μμ μ μ€ν¬λ¦½νΈ νμΌ(ex. start.sh) λ±μ μ΄μ©νμ¬ νλ‘μ νΈ μλ²λ₯Ό μ€ννλ€.
- κΉνλΈλ‘μ PUSHλ λ³λλ‘ μ§ννλ€.
π¨ λ¬Έμ μ
- νμ¬ λ°°ν¬μ€μΈ νμΌμ λ²μ κ³Ό κΉνλΈμ μ λ‘λλ λ²μ μ΄ λ€λ₯Έ κ²½μ°κ° λ§μ λ²μ κ΄λ¦¬κ° μ ν λκ³ μμ§ μμ
- ν λ² λ°°ν¬ν λλ§λ€ κ°λ°μκ° ν΄μΌνλ μμ μ΄ λ§μ(μκ°μ λ§μ΄ λΉΌμκΉ)
π§π»π¬ κ³νμ€μΈ Jenkins blue & Green λΉλ νμΌ λ°°ν¬ λ°©μ
- λ‘컬μμ μλ² λ³κ²½μ¬ν λ° μΆκ°μ¬νμ μ μ©νλ€.
- λ‘컬μμ κΉνλΈλ‘ PUSHνλ€.
- κΉνλΈμμ μΆ©λ μ¬ν λ° λλ£ κ°λ°μμ μ²΄ν¬ ν MERGE νλ€.
- κΉνλΈμ MERGE μ νΈλ₯Ό μμ ν μ ν¨μ€κ° μ΅μ λ²μ μ jar νμΌμ λΉλνλ€.
- λΈλ£¨κ° μ΄μμλμ§ νμΈνλ€.
μν© 1) λΈλ£¨ μ€ν μ€ → κ·Έλ¦°μ λ°°ν¬ ν μ€ν → λΈλ£¨ μ€λ¨
if) λΈλ£¨κ° μ΄μμλ κ²½μ°
- κ·Έλ¦°μ λΉλν μ΅μ λ²μ μ jar νμΌμ μ μ‘νκ³ μ€νμν¨λ€.
- κ°λ°μκ° μ€μ ν λͺ μ΄μ μ£ΌκΈ°λ§λ€ κ·Έλ¦° μλ²κ° μ λλ‘ μ€νλμλμ§ νμΈνλ€.
- κ·Έλ¦° μλ²κ° μ±κ³΅μ μΌλ‘ λμνλ€λ©΄ NGINXμκ² νλ‘μ λ°©ν₯μ κ·Έλ¦°μΌλ‘ λ³κ²½νλλ‘ λͺ λ Ήνλ€.
- λΈλ£¨ μλ²μ νλ‘μΈμ€λ₯Ό μ’ λ£νλ€.
μν© 2) κ·Έλ¦° μ€ν μ€ → λΈλ£¨μ λ°°ν¬ ν μ€ν → κ·Έλ¦° μ€λ¨
if) λΈλ£¨κ° μ£½μ΄μλ κ²½μ°
- λΈλ£¨μ λΉλν μ΅μ λ²μ μ jar νμΌμ μ μ‘νκ³ μ€νμν¨λ€.
- κ°λ°μκ° μ€μ ν λͺ μ΄μ μ£ΌκΈ°λ§λ€ λΈλ£¨ μλ²κ° μ λλ‘ μ€νλμλμ§ νμΈνλ€.
- λΈλ£¨ μλ²κ° μ±κ³΅μ μΌλ‘ λμνλ€λ©΄ NGINXμκ² νλ‘μ λ°©ν₯μ λΈλ£¨λ‘ λ³κ²½νλλ‘ λͺ λ Ήνλ€.
- κ·Έλ¦° μλ²μ νλ‘μΈμ€λ₯Ό μ’ λ£νλ€.
ππ» κΈ°λ ν¨κ³Ό
- κΉνλΈμ νΈμνλ κ²λ§μΌλ‘ λͺ¨λ λ°°ν¬ κ³Όμ μ μλμΌλ‘ μ²λ¦¬ν μ μλ€.
- κΉνλΈμ μμ© μλ²μ λ°°ν¬ λ²μ μ΄ ν΅μΌλλ€.
- 무μ€λ¨ λ°°ν¬κ° κ°λ₯ν΄μ§λ€.
μ°Έκ³
λ€ΌνΌ
https://hyunminh.github.io/nonstop-deploy/
https://hudi.blog/zero-downtime-deployment-with-jenkins-and-nginx/