μμνκΈ° μ μ
λμ νκ² λ κ³κΈ°
νμ¬ λλ λΆλμ° μ 보λ₯Ό κ²μ μΉ μλΉμ€λ₯Ό μ΄μνλ λΆμμμ 근무νκ³ μλ€. κ³Όκ±°λΆν° νμ¬κΉμ§ μ§μ λ μμμ΄ λ§μ λΆλμ° μ 보λ₯Ό κ²μνκ³ μκΈ° λλ¬Έμ, λΆλμ° νμ¬λ 건물 κ΄λ¦¬ νμ¬ λ±μΌλ‘λΆν° μ 보 μμ μμ²μ΄ λ€μνκ² λ€μ΄μ¨λ€. μ΄λ¬ν μ 보 μμ μμ²λ€μ κ³ κ° λμ λΆμμμ μ¬μ©νλ μ¬λ΄ ν΄μ μ μλλλ°, μ΄ μ¬λ΄ ν΄ νλ‘μ νΈλ₯Ό μ΄μνκ³ μ μ§ λ³΄μνλ κ²λ λΉμ°ν λ΄κ° μμλ λΆμμμ λ΄λΉνκ³ μλ€.
μΌλΆ μμ μ μ λ§ μ¬μ©νλ μ¬λ΄ ν΄μ΄κΈ° λλ¬Έμ, κΈ°λ₯ μΆκ°λ μμ€ μ½λ λ³κ²½λ μμ£Ό μλ€. κ·Έλ κΈ° λλ¬Έμ νλ‘μ νΈμ Linter Check λ Unit test, μλ λ°°ν¬ λ±μ μ ν λμ λμ΄ μμ§ μμλ€. νμ§λ§, μ₯κΈ°μ μΈ κ°λ° μμ°μ±μ ν₯μμ μν΄ CI/CD λμ μ΄ νμνκ³ , μ°μ μ μΌλ‘ CIλ₯Ό μ λ΄νμ¬ λμ νκ² λμλ€.
κ·Έλμ CI κ° λμ§?
Google κ²μμ°½μ μ΄κ³ , CI/CDλ ν€μλλ‘ κ²μμ ν΄λ³΄λ©΄ μ λ§ λ€μν κ²°κ³Όκ° λμ¨λ€. Jenkins, Docker, Github, μ μμΌ λ±λ±... κ·Έ μ€μμλ CI λ
Continuous integration
(μ§μμ μΈ ν΅ν©)
λΌλ λ»μ΄λΌκ³ νλ€. λλΆλΆμ μννΈμ¨μ΄ κ°λ°μ μ¬λ¬ μ¬λμ΄ λͺ¨μ¬ ν λ¨μλ‘ νμ μ νκΈ° λλ¬Έμ, κ°μ λ΄λΉ λΆλΆμ λλμ΄ μμ€ μ½λλ₯Ό μμ νκ³ κ°λ°νλ€. λν, μ΅κ·Ό κ°λ° λ°©λ²λ‘ μ΄ Waterfall μμ Agile Methodology λ‘ λ³ννλ©΄μ, μ΄λ¬ν μμ€ μ½λμ μμ μ λΉλ²νκ³ μμ£Ό μΌμ΄λκ² λλ€. μ΄λ κ² μ¬λ¬ μ¬λμ μμ ν΅ν΄ μμ λ μμ€ μ½λλ€μ μ κΈ°μ μΌλ‘ ν΅ν©νλ κ²μ CI λΌκ³ νλ€.
μ CI κ° νμνκ°?
κ°λ° λλ νμ μ μ‘°κΈμ΄λΌλ ν΄λ³Έ κ°λ°μλΌλ©΄ Git κ°μ νμ κ΄λ¦¬ μμ€ν (SCM, Source Code Management) μ μ¬μ©ν΄ λ³Έ κ²½νμ΄ μμ κ²μ΄λ€. κ·Έλ¦¬κ³ μ΄λ¬ν νμ κ΄λ¦¬ μμ€ν μ μ μ¬μ©νλ€λ©΄, μ¬λ¬ μ¬λμ΄ μμ ν μμ€ μ½λλ₯Ό λ³ν©(Merge) νκ³ , ν μ€νΈ(Test) μ λ°°ν¬(Deploy) λ μ΄λ ΅μ§ μκ² μ§νν μ μμ κ² μ΄λ€.
νμ§λ§ νλ‘μ νΈ κ·λͺ¨κ° 컀μ§κ³ μμ€ν κ΅¬μ‘°κ° λ³΅μ‘ν΄μ§λ€ 보면, μμμΉ λͺ»ν κ³³μμ μ₯μ κ° λ°μνκ² λκ³ , μ΄λ₯Ό μμ νκΈ° μν΄ μ¬λ¬λ²μ μμ μ κΈνκ² νλ€ λ³΄λ©΄, μ μμ΄ λ§μ Conflict μ "λ΄ λ‘컬μμλ μ λλλ°...?" μ κ°μ μν©μ λ§μ£Όνκ² λ κ²μ΄λ€. μ΄λ° μν©μ΄ μ μ°¨ λ°λ³΅λλ©΄, μμ€ μ½λμ νμ§ κ΄λ¦¬κ° μ λλ‘ λμ§ μμ κ°λ° μμ°μ±μ΄ νμ νκ² μ νλλ€.
κ·Έλ¦¬κ³ , μ΄μ°μ μ° ν μ€νΈλ₯Ό μλ£ν΄ LIVE μλ²μ μλΉμ€λ₯Ό λ°°ν¬νμ¬ μ΄μνκ² λλλΌλ λΉλ²νκ² μ₯μ κ° λ°μν μ μλ€. μ΄λ΄ λ νλ‘μ νΈμ CIλ₯Ό λμ νλ€λ©΄, μλ‘κ² Commit λ μ½λμ λν νμ§ κ΄λ¦¬μ ν μ€νΈλ₯Ό μμ½κ³ κ°νΈνκ² μνν μ μλ€.
CI μ λμ
무μμ λμ ν κ²μΈκ°?
CI μ μ§μμ μΈ ν΅ν©μ μ€ννκΈ° μν΄μλ λ°λμ νμν κΈ°λ₯μ΄ ν¬κ² 2κ°μ§κ° μλ€.
- Code Inspection (μμ€μ½λλ₯Ό λΆμνμ¬, κ°λ° νμ€μ μλ°°λμκ±°λ μλͺ» μμ±λ λΆλΆμ μμ )
- Testing (Unit Test, E2E Test, Integration Test λ±λ±...)
κ·Έλ¦¬κ³ , μ΄ 2κ°μ§λ λͺ¨λ μλμΌλ‘ κ²μ¬λκ³ μ€νλμ΄μΌ νλ€. κ° μΈμ΄ λλ μμ€ν μ λ°λΌ μ λ§ λ€μν Tool μ΄ μ‘΄μ¬νμ§λ§, μ΅μ μ μ’μ κΈ°λ₯μ κ°μ§ Tool μ 무쑰건 λμ νκΈ°λ κ² λ³΄λ€λ κ° νλ‘μ νΈμ νΉμ±μ μλ§κ² λμ νλ κ²μ΄ μ€μνλ€κ³ μκ°νλ€. κ·Έλμ λλ λ¨Όμ μ¬λ΄ ν΄ νλ‘μ νΈμ tech stack μ μ‘°μ¬νλ€.
λμ ν CI Tools μ κ²°μ
μ¬λ΄ ν΄μ ν¬κ² Laravel Mix λ‘ κ΅¬μ±λμ΄ μμκ³ , μμΈ tech stack μ μλμ κ°μλ€.
- Front End
- JavaScript
- Node.js : v8.17.0
- Vue.js : v2.5.17
- Back End
- PHP : v7.2.34
- Composer : v1.7.1
- Laravel : v5.5.42
κ·Έ μΈμ κΈ°ν νΉμ΄ν μ¬νλ€μ μμμ§λ§ κ°κ° μΈμ΄λ³ λλ νλ μμν¬ λ³ λ²μ λ€μ΄ κ½€ μ€λλμκΈ° λλ¬Έμ, λμ μ μ‘°μ¬λ₯Ό μ§ννλ©΄μλ μμ‘΄μ± λ¬Έμ λλ¬Έμ κ½€λ 골μΉμν κ² κ°λ€λ μκ°μ λ§μ΄ νλ€. κ·Έλ κΈ° λλ¬Έμ μ°μ μλμ κ°μ μμλ‘ λμ μ μ§ννκΈ°λ‘ κ²°μ νλ€.
- Code Inspection μ μν μΈμ΄λ³ Linter
- κ° μΈμ΄λ³ Unit Test
- Github Actions λ₯Ό ν΅ν Linter, Unit Test
λκΈ