CI/CD란?
간단하게 말하자면
어플리케이션 개발 단계부터 배포까지 모든 단계를 자동화를 통해 효율적이고 빠르게, 사용자에게 빈번히 배포할 수 있도록 만드는 것
CI( Continuous Intergration ) - 지속적인 통합
버그 수정이나 새로운 기능 들을 메인 repository에 지속적으로 build 되고 test가 되어 merge 되는 것
1. 개발자들은 코드 변경 사항을 주기 적으로 빈번하게 머지해야 한다.
나중에 merge 하려고 하면 그 소스코드들을 충돌 없이 merge 하려고 하는데 시간이 들기 때문에
이 기능을 어떻게 작은 단위로 나누어서 개발하고 통합해 나가는 지가 중요!
2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동
merge 된 코드를 + CI스크립트를 통해 build / unit test실행
CI의 장점
- 개발 생산성 향상
- 문제점을 빠르게 발견
- 버그 수정 용이
- 코드의 퀄리티 향상
CD( Continuous Delivery / Continuous Deployment ) - 지속적인 제공 / 지속적인 배포
어떻게 자동화해서 배포할 수 있을까?
CI -> Prepare Release -> Deploy Release
배포할 Prepare Release를 준비후 개발자나 검증팀이 검증을 마친 후,
수동적으로 배포하는 단계 혹은 모든 단계 자동화
최종 단계가 자동화가 되었는지에 따라 살짝 달라질 수 있음
CI/CD 파이프라인
Code ---> Build ---> Test ---> Release ---> Deploy
CI/CD를 위한 툴
Jenkins
Buildkite
Github Actions
bitbucket pipeline
Circleci
GitLab CI/CD
'DevOps > CI,CD' 카테고리의 다른 글
[CI/CD] Github Actions 기본문법 (0) | 2024.11.04 |
---|