π μ»΄νμΌ
complierλ₯Ό ν΅ν΄ javaμ κ°μ νλ‘κ·Έλλ° μΈμ΄λ₯Ό κΈ°κ³κ° μ΄ν΄ν μ μλ μΈμ΄λ‘ λ²μν΄μ€λ€.
π λΉλ(Build)
μμ€μ½λ νμΌμ μ€νκ°λ₯ν μννΈμ¨μ΄ μ°μΆλ¬Όλ‘ λ§λλ μΌλ ¨μ κ³Όμ
# Build Tool
preprocessing → complie → packaging → testing → distribution
javaμμλ maven, gradleκ³Ό κ°μ build λꡬλ₯Ό ν΅ν΄ μ»΄νμΌκ³Ό ν¨κ» μμ€μ½λ νμΌμ .jar, .warκ³Ό κ°μ κ²μΌλ‘ λ³ννλ λΉλλ ν¨κ» μν
π λ°°ν¬
λ°°ν¬λ₯Ό ν μν©μμ μ¬λ°λ₯΄μ§ μκ² λμνμ¬ λ¬Έμ κ° λ°μνμμ λ, κ°λ°μλ€μ μ½λλ₯Ό μμ ν΄μΌ νλ€. μ΄ λ, λ€μ complie, build, λ°°ν¬νλ κ³Όμ μ ν΅ν΄ μμ λ μ½λκ° μ λλ‘ λμνλμ§ ν μ€νΈλ₯Ό μ§νν΄μΌνλ€. μ΄κ²μ μκ°μ΄ μ€λκ±Έλ¦¬κ³ μ€μλ μ¦κΈ° λλ¬Έμ μ΄λ₯Ό λμμ£Όλ κ²μ CI/CDλΌκ³ νλ€.
λνμ CI/CD ν΄: Jenkins, TravisCI, CircleCI
π DevOps
Development + Operationsμ ν©μ±μ΄
κ°λ°κ³Ό μ΄μμ΄ ν©μ³μ§ κ°λ°λ°©λ²λ‘ μ΄λ€.
κ°λ° μ‘°μ§μ μλ‘μ΄ κΈ°μ κ³Ό κΈ°λ₯μ λμ νκ³ μΆμ΄νκ³ , μ΄μ μ‘°μ§μ μμ μ±μ μ€μμνλ©΄μ μ΅ν©ν λ°©λ²λ‘ μ΄ νμ
→ CI/CD κ° DevOpsμ ν¬ν¨
π CI(Continuous Integration)
ν΅ν©: κ°μΈμ΄ μμ ν μ½λλ₯Ό κ³΅μ© μμ νκ²½μ μ¬λ¦¬κ³ λ³ν©νλ κ³Όμ
βμ§μμ ν΅ν©, κ°λ°μ μ§ννλ©΄μλ νμ§μ κ΄λ¦¬ν μ μλλ‘ νλ κ²
μ¬λ¬ λͺ μ΄ νλμ μ½λμ λν΄μ μμ μ νλλΌλ μ§μμ μΌλ‘ ν΅ν©νλ©΄μ κ΄λ¦¬ν μ μμμ μλ―Έ
CI μ μ©νλ©΄ κ°λ°μλ κ°κ° ꡬνν κΈ°λ₯μ ꡬννκ³ , μμ±λλ©΄ main λΈλμΉλ‘ ν΅ν©νκ³ , μ½λκ° μ λΉλ λμλμ§ νμΈνκ³ , λ²κ·Έλ₯Ό ν΄κ²°νλ€.
νμ§λ§, νλ‘μ νΈμ ν¬κΈ°κ° 컀μ§μλ‘ λΉλ, ν μ€νΈ μκ°μ λ§μ΄ μμλλ€. μ΄λ₯Ό μλννλ©΄ κ°λ°μκ° μ§μ λΉλ, ν μ€νΈλ₯Ό νμ§ μμλ μμ ν μ½λλ₯Ό λΈλμΉ λ³ν©λ§ νλ©΄ μλμΌλ‘ λΉλμ ν μ€νΈλ₯Ό κ²μ¦ν μ μλ€.
κ°λ°μκ° κΈ°λ₯μ λ³ν©ν λλ§λ€ λΉλμ ν μ€νΈκ° νΈλ¦¬κ±° λμ΄ μ€νλλ©΄, κ²°κ³Όλ₯Ό ν΅ν΄ μ΄λ€ λ¬Έμ κ° μλμ§ λ°°ν¬ μ μ νμΈν μ μμ΄ λ°°ν¬ ν λ²κ·Έλ₯Ό μμ ν μ μλ λλ³΄λ€ μκ°μ μ μ½ν μμλ€.
π CI μμ½ 1. κ°λ°μκ° κ΅¬νν μ½λ(κΈ°λ₯)μ κΈ°μ‘΄ μ½λμ λ³ν©(merge) 2. λ³ν©λ μ½λκ° μ¬λ°λ₯΄κ² λμνκ³ λΉλλλμ§ μλννμ¬ κ²μ¦ 3. ν μ€νΈ κ²°κ³Ό λ¬Έμ κ° μλ€λ©΄ λ€μ 1λ‘ λμκ° μμ νκ³ , μλλ©΄ λ°°ν¬λ₯Ό μ§νβ |
π CD(Continuous Deployment/Delivery)
μ§μμ λ°°ν¬(Continuous Deployment)λ μ§μμ ν΅ν©μ κ±°μΉ μ½λλ μ λ’°ν μ μκ³ λ°λ‘ λ°°ν¬ κ°λ₯ν λμ μ©μ΄
[μλμ λ°°ν¬]
μ§μμ μ 곡(Continuous Delivery)μ μννΈμ¨μ΄κ° νμ μ λ’° κ°λ₯ν μμ€μμ λ°°ν¬λ μ μλλ‘ κ΄λ¦¬νμλ κ°λ
CIλ₯Ό ν΅ν΄μ μλ‘μ΄ μμ€μ½λμ λΉλμ ν μ€νΈ λ³ν©κΉμ§ μ§νλμλ€λ©΄, λΉλμ testλ₯Ό κ±°μ³ githubμ κ°μ μ μ₯μμ μ λ‘λνλ κ²μ μλ―Ένλ€.
[μλμ λ°°ν¬] : μ¬λμ κ²μ¦μ ν΅ν΄
μ§μμ λ°°ν¬μμλ CIλ₯Ό ν΅ν΄ λΉλν μμ€μ½λλ₯Ό ν μ€νΈ κ°λ₯ν λκ°μ§ λ²μ μΌλ‘ λ§λ λ€. μ λ²μ μμ ν μ€νΈκ° λ¬Έμ κ° λ°μνλ©΄, μμ λ€ μ μ λ²μ μΌλ‘ λ°°ν¬λ₯Ό μ§ννλ€.
π Gitlab
Gitμ μ격 μ μ₯μ κΈ°λ₯, μ΄μ νΈλ컀, CI/CD λ± λ€μν κΈ°λ₯μ μ 곡
μ€μΉν git
μλΉμ€ν μ격μ μ₯μ μ΄μνλ©΄μ λΉμ©μ΄ λΆλ΄λκ±°λ, 보μμ΄ μ€μν νλ‘μ νΈμ μ ν©
public, privateμ λν΄ λ¬΄λ£ μ§μ, μ체 CIμ μ¬μ©μ μΈν°νμ΄μ€ μ 곡
10λͺ μ΄ν νλ‘μ νΈ λ¬΄λ£μ¬μ©, API μ 곡
π Gitlab CI/CD
Gitlab CI/CDλ λ컀μμ ꡬλ, gitlab-ci.ymlμμ μμ±λ μ€ν¬λ¦½νΈμ λ°λΌ μμ°¨μ μΌλ‘ νμ΄νλΌμΈ(Job)μ΄ μ€ν
μμ€κ° Commit λ λλ§λ€ CI/CDλ₯Ό μ§ννμ¬ ν μ€νΈ, λ¦°νΈ, λΉλ, λ°°ν¬λ₯Ό μμ°¨μ μΌλ‘ μ€ν
[μΆμ²]
https://hyuntaeknote.tistory.com/9
'DevOps > CI | CD' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[κ°λ ] CI/CD (0) | 2022.03.25 |
---|