μλ‘
νμ¬ μκ·Έλ§ ν μ΄ νλ‘μ νΈλ₯Ό νμ νμ¬ μ§ν μ€μΈλ°, νμκ³Ό μ λλ‘ branch μΆ©λμ ν΄κ²°νμ§ λͺ»ν΄ μΌμ΄λλ μλ¬μ, μμμ μΌλ‘ EC2μ μ μνμ¬ μ§μ λ°°ν¬λ₯Ό ν΄μΌ νλ μ¬μνμ§λ§ μμ λ€μ΄ μ κ²½ μ°μ΄κ² λμμ΅λλ€. μ λ μ΄ νλ‘μ νΈμ GitHub Actionμ μ΄μ©νμ¬ CI/CDλ₯Ό μ μ©νλλ° μ΄λ² κ²μκΈμμλ μ΄λ¬ν μμ λ€μ μλνμμΌμ£Όλ CI/CDμ λν΄μ μμλ³΄κ³ λ€μ κ²μκΈμμλ μ¬λ¬ κ°μ CI/CD ν΄ μ€ GitHub Actionμ μ΄μ©ν CI/CD μ μ©μ λν΄μ μ λ¦¬ν΄ λ³΄κ² μ΅λλ€.
CI(Continuous Integration)
CI(Continuous Integration)λ "μ§μμ μΈ ν΅ν©" μ΄λΌλ μλ―Έλ‘, μμ½νμλ©΄ λΉλ/ν μ€νΈ μλν κ³Όμ μ λλ€.
μ ν리μΌμ΄μ μ λν μλ‘μ΄ μ½λ λ³κ²½ μ¬νμ΄ μ κΈ°μ , μλμ μΌλ‘ λΉλ λ° ν μ€νΈλμ΄ κ³΅μ 리ν¬μ§ν 리μ ν΅ν©λλ―λ‘ CIλ₯Ό μ±κ³΅μ μΌλ‘ ꡬνν κ²½μ° μ¬λ¬ λͺ μ κ°λ°μκ° λμμ μ ν리μΌμ΄μ κ°λ°κ³Ό κ΄λ ¨λ μ½λ μμ μ ν κ²½μ° μλ‘ μΆ©λν μ μλ λ¬Έμ λ₯Ό μμ½κ² νμΈνκ³ ν΄κ²°ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ νλμ νλ‘μ νΈλ₯Ό μ¬λ¬ κ°λ°μλ€κ³Ό ν¨κ» νμκ΄λ¦¬ ν΄(git, svn λ±)μ μ΄μ©νμ¬ μ§ννκ³ μλ€κ³ κ°μ ν©μλ€. μ¬κΈ°μ νλ²μ―€μ merge μ μΆ©λλλ μ½λκ° λ°μν κ²½μ°κ° μμ΅λλ€. λ¬Όλ‘ μ΄λ branch μΆ©λμ κΉλνκ² ν΄κ²°νλ€λ©΄ μ’μ κ²½μ°μ§λ§ λ¬Έμ λ λ³ΈμΈμ μΆ©λμ ν΄κ²°νλ€κ³ μκ°νμ§λ§ μμνμ§ λͺ»ν μλ¬κ° λ°°ν¬ν λ λ°μνλ κ²½μ°κ° μκΈΈ μ μμ΅λλ€. μ΄λ λλ€μ ν μ€νΈλ₯Ό μ§ννκ³ λ°°ν¬κΉμ§ νλ€λ©΄ μλΉν λ§μ μκ°μ μμνκ² λ©λλ€.
νμ§λ§ CIλ₯Ό μ μ©νλ©΄ 컀λ°ν λλ§λ€ λΉλμ μΌλ ¨μ μλ ν μ€νΈκ° μ΄λ£¨μ΄μ Έ λμμ νμΈνκ³ λ³κ²½μΌλ‘ μΈν΄ λ¬Έμ κ° μκΈ°λ λΆλΆ(μ»΄νμΌ μλ¬ λ±)μ΄ μλλ‘ λ³΄μ₯ν©λλ€. μ¦, githubμμ μ½λλ§ μ¬λ¦¬λ©΄ λλ¨Έμ§ μμ μΈ ν μ€νΈμ λΉλλ νλ‘κ·Έλ¨μ΄ μλμΌλ‘ ν΄μ€λ€λ μλ―Έμ λλ€.
CIμ κ°λ¨ν μμ
- κ°λ°μκ° κ΅¬νν μ½λλ₯Ό κΈ°μ‘΄ μ½λμ λ³ν©νλ€.
- λ³ν©λ μ½λκ° μ¬λ°λ₯΄κ² λμνκ³ λΉλλλμ§ κ²μ¦νλ€.
- ν μ€νΈ κ²°κ³Ό λ¬Έμ κ° μλ€λ©΄ μμ νκ³ λ€μ 1λ‘ λμκ°λ€. λ¬Έμ κ° μλ€λ©΄ λ°°ν¬λ₯Ό μ§ννλ€.
CIμ μ₯μ
- μ½λμ κ²μ¦μ λ€μ΄κ°λ μκ°μ΄ μ€μ΄λ λ€.
- κ°λ° νΈμμ±μ΄ μ¦κ°νλ€.
- νμ ν μ€νΈ μ½λλ₯Ό ν΅κ³Όν μ½λλ§μ΄ λ ν¬μ§ν 리μ μ¬λΌκ°κΈ° λλ¬Έμ, μ’μ μ½λ ν리ν°λ₯Ό μ μ§ν μ μλ€.
λν CIλ κ·Έ μ체λ§μΌλ‘ μ μ΅νμ§λ§ CI/CD νμ΄νλΌμΈμ ꡬννκΈ° μν 첫 λ²μ§Έ λ¨κ³μ΄κΈ°λ ν©λλ€.
CD(Continuous Delivery)
CDλ "Continuous Delivery, μ§μμ μΈ μ 곡" μ΄λΌλ μλ―Έμ "Contunuous Deployment, μ§μμ μΈ λ°°ν¬"λΌλ μλ―Έμ λλ€.
λ κ°μ§ μλ―Έ λͺ¨λ νμ΄νλΌμΈμ μΆκ°λ¨κ³μ λν μλνλ₯Ό λ»νμ§λ§ λλ‘λ μΌλ§λ λ§μ μλνκ° μ΄λ£¨μ΄μ§κ³ μλμ§λ₯Ό μ€λͺ νκΈ° μν΄ λ³λλ‘ μ¬μ©λκΈ°λ ν©λλ€.
- μ§μμ μΈ μ 곡(Continuous Delivery)μ 곡μ λ ν¬μ§ν λ¦¬λ‘ μλμΌλ‘ Release νλ κ²μ μλ―Έν©λλ€.
- μ§μμ μΈ λ°°ν¬(Continuous Deployment)λ Production λ 벨 κΉμ§ μλμΌλ‘ λ°°ν¬νλ κ²μ μλ―Έν©λλ€.
μ¦, μ 리νμλ©΄ μ§μμ μ 곡μ CIλ₯Ό ν΅ν΄μ μλ‘μ΄ μμ€μ½λμ λΉλμ ν μ€νΈ λ³ν©κΉμ§ μ±κ³΅μ μΌλ‘ μ§νλμλ€λ©΄, λΉλμ ν μ€νΈλ₯Ό κ±°μ³μ githubμ κ°μ μ μ₯μμ μ λ‘λνλ κ²μ μλ―Έν©λλ€.
μ§μμ λ°°ν¬λ μ΄λ κ² μ±κ³΅μ μΌλ‘ λ³ν©λ λ΄μμ μ μ₯μλΏλ§ μλλΌ μ¬μ©μκ° μ¬μ©ν μ μλ λ°°ν¬νκ²½κΉμ§ 릴리μ¦νλ κ²μ μλ―Έν©λλ€.( ex) μλμΌλ‘ EC2μμ νλ‘μ νΈλ₯Ό λΉλν¨)
CI/CDμ νλ¦λ
- CIλ₯Ό μ μ©νμ¬ μ½λλ₯Ό κ²μ¦νλ€.
- λ°°ν¬ νκ²½κ³Ό λΉμ·ν κ³³μμ κ²μ¦μ μ§ννλ€.
- κ²μ¦λ μννΈμ¨μ΄λ₯Ό μ€μ νλ‘λμ νκ²½μΌλ‘ λ°°ν¬νλ€.
CDμ μ₯μ
- κ°λ°μκ° λ°°ν¬λ³΄λ€λ κ°λ°μ λμ± μ κ²½ μΈ μ μλλ‘ λμμ€λ€.
- κ°λ°μκ° μμμ μμ΄ λΉλ, ν μ€νΈ, λ°°ν¬κΉμ§ μλνλ₯Ό ν μ μλ€.
μμ½
CI/CDλ₯Ό μ μ©νκΈ° μ
- κ°λ°μλ€μ΄ κ°λ°νμ¬ μ½λλ₯Ό μμ νλ€.
- κ°μμ λΈλμΉμ μ½λλ₯Ό push νλ€. (μ΄λ μ΄λ ν λΆλΆμμ μλ¬κ° λ¬μ§λ§ κ°λ°μλ€μ λμΉμ±μ§ λͺ»νλ€.)
- branchλ₯Ό main branchμ ν΅ν©(merge)νλ€.
- ec2νκ²½(λ°°ν¬ νκ²½)μμ λ°°ν¬νκΈ° μν΄ buildλ₯Ό μ§ννλ€.
- λ¬Έμ κ° μλ μ½λμ΄κΈ°μ μλ¬κ° λ°μνκ³ , μ½λλ₯Ό λ€μ κ°λ° νκ²½μΌλ‘ κ°μ Έμμ μ½λλ₯Ό μμ νλ€.
- (1) ~ (5)μ κ³Όμ μ λ°λ³΅νλ€.
- λ§μ μκ°μ ν μ νμ¬ μλ¬κ° ν΄κ²°λμμΌλ©΄ λ°°ν¬λ₯Ό μμνλ€. νμ§λ§ λ°°ν¬ κ³Όμ λν, κ°λ°μκ° κ³Όμ μ κ±°μΉλ―λ‘ λ§μ μκ°μ μμνκ² λλ€.
CI/CDλ₯Ό μ μ©ν ν
- κ°λ°μλ€μ΄ κ°λ°νμ¬ λΈλμΉμ μ½λλ₯Ό push νλ€.
- git pushλ₯Ό ν΅ν΄ Trigger λμ΄ CIμλ²μμ μμμ Build, Test, Lintλ₯Ό μ€ννκ³ κ²°κ³Όλ₯Ό μ μ‘νλ€.
- κ°λ°μλ€μ κ²°κ³Όλ₯Ό μ μ‘λ°κ³ μλ¬κ° λ λΆλΆμ΄ μλ€λ©΄ μλ¬ λΆλΆμ μμ νκ³ μ½λλ₯Ό main λΈλμΉμ merge νλ€.
- main λΈλμΉμ μ½λλ₯Ό merge νκ³ Build, Testκ° μ μμ μΌλ‘ μνμ΄ λμλ€λ©΄ CIμλ²μμ μμμ Deploy(λ°°ν¬) κ³Όμ μ μννλ€.
μ°Έκ³
'BackEndπ± > Etc' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Sourcetree "permission denied (publickey)" error ν΄κ²° (0) | 2022.07.06 |
---|---|
[git] Git - HEAD (2) | 2022.07.03 |
[git] .gitignore νμ μ 리 (0) | 2022.07.02 |
[AWS] ec2 μΈμ€ν΄μ€ λ° RDS μ¬λΌμ§ νμ (3) | 2022.05.30 |
ν΄λΌμ°λμ μ΄ν΄: IaaS, PaaS, SaaS (0) | 2022.04.25 |
API vs Library vs Framework (0) | 2022.04.25 |
λκΈ