CI/CD
어플리케이션 개발 단계부터 배포 때까지 이 모든 단계를 자동화해서 사용자에게 빈번하게 배포할 수 있도록 만드는 것을 의미한다.
- CI = Continuous Intergration : 지속적인 통합
- CD = Continuous Delivery : 지속적인 제공 / Continuous Deployment : 지속적인 배포
발생 배경
요즘 빠르게 변화하고 기술이 진화하는 시대에 어떻게 빠르게 대응하고 제품을 출시하고 업데이트할 것인가를 해결하기 위해 CI/CD 개발 프로세스를 사용한다
CI란?
버그 수정이나 새로 만드는 기능들이 메인 레포에 주기적으로 bulid 되고 test 되어서 merge 되는 것
⇒ 빌드 / 테스트 자동화 과정
CI의 중요한 포인트
- 코드 변경사항을 주기적으로 빈번하게 머지해야 함
- 한 기능을 구현할 때 한 번에 머지하지 않고, 최대한 작은 단위로 개발하고 머지하며 통합하는 것이 중요
- 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
- 개발자가 코드 리뷰 받아서 레포에 올리면 개발팀이 만든 CI 스크립트를 통해 추가된 코드와 함께 레포가 빌드되고, 빌드 잘 되면 팀에서 작성한 여러 가지 테스트들도 스크립트를 통해 실행이 된다
CI의 장점
- 개발 생산성 향상
- 애플리케이션에 대한 새로운 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포에 통합되므로 서로 충돌할 수 있는 문제를 해결할 수 있음
- 문제점 빠르게 발견 → 버그 수정이 빠름
- 코드 퀄리티 향상
- CI를 잘 운영하기 위해선 내 코드 유닛테스트를 꼭 포함해야 하기 때문에 퀄이 좋아짐
CD란?
지속적 제공 또는 지속적 배포 둘 중 하나로 쓰임 → 배포 자동화 과정
Continous Delivery VS Continuous Deploy
Continuous Delivery (지속적인 제공)
바로 유저에게 배포되지 않고 Release 브랜치로 자동 배포
즉, 유저에게 배포하는 것은 수동으로 해줘야 함
Continuous Deply (지속적인 배포)
바로 유저에게 배포하는 것을 자동화
CI/CD 파이프라인 정리
- 개발자가 작은 단위로 나눠서 주기적으로 메인 레포에 merge
- 자동으로 빌드, 테스트
- 릴리즈 준비
- 수동적 또는 자동적으로 최종 배포
Github Actions
빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼
즉, 특정한 이벤트가 발생했을 때 내가 원하는 일을 자동으로 수행해줄 수 있도록 만들어주는 툴
Github Actions에서 가장 중요한 5가지 개념
- workflows (워크플로우) : 특정 이벤트가 발생했을 때 내가 어떤 일을 수행하고 싶냐를 명시할 수 있는 것
- events (이벤트) : 어떤 일이 발생했는지를 지정할 수 있음
- jobs (작업) : 워크플로의 단계 집합
- actions (액션) : 재사용할 수 있는 공개된 액션이 많음.
- runners (실행기) : job 하나당 하나의 runner를 가지고 있음. 워크플로우를 실행하는 서버
👉🏻 workflow 작성 파일 yml 사용 → ex) .github/workflows/workflow.yml
'BoostCamp' 카테고리의 다른 글
| [250305] HTML (1) | 2025.03.05 |
|---|---|
| [250228] Git 전략과 협업 방법 (0) | 2025.02.28 |
| [250227] Git에 대해, 협업 시 버전 관리의 중요성 및 사용법 (0) | 2025.02.27 |
