🙌 Notion에서 공부한 기록 옮기기
CI/CD
- 소프트웨어 개발과 배포 과정을 자동화하여 개발자들이 효율적으로 소프트웨어를 개발하고 배포하는 방법을 지칭하는 용어
- 여러 명의 개발자가 코드 작업을 할 때 서로 충돌할 수 있는 문제 해결
1. CI (Continuos Integration)
= 빌드 및 테스트 자동화
- 지속적인 통합
- 버전 관리 시스템(Git)에 코드를 푸시할 때 자동화된 빌드, 테스트 및 통합 프로세스를 실행하여 코드를 레포지토리에 지속적으로 통합
- 추가/변경된 코드를 자동으로 빌드한 후 테스트
- 테스트에 통과한 경우에만 공유 레포지토리에 병합
- 구현
- CI 환경 설정(Java, MySQL 등) 및 테스트 workflow를 작성
- 순서(원리)
- GitHub에 PR
- 빌드 테스트 진행 (올바르게 동작하는지)
- 문제가 있으면 개발자가 수정하고 다시 PR
- 문제 없으면 (필요 시 코드 리뷰 진행 후) Merge 후 배포 요청
- 예시
- 원래 작업 흐름: 수비가 작업한 파일을 PR 했을 때, 민정이 직접 빌드 및 테스트를 진행하며 확인해야 함 + 수비 로컬에선 오류가 없었는데 민정 로컬에선 제대로 안 돌아갈 수도 있음
- CI 도입 시: 민정이 수작업으로 직접 빌드 및 테스트를 할 필요가 없음
- 즉, 빌드 및 테스트 과정을 Github Actions한테 시키는 것임!!
- 장점
- 코드 검증에 필요한 시간 감소
- 개발 편의성 향상
- 항상 테스트 코드를 통과한 코드만ㅎ이ㅂ 레포지토리에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있음
2. CD (Continuos Deployment)
= 배포 자동화
- 지속적인 배포
- (배포 파이프라인을 구축하여) CI 과정을 통해 빌드와 테스트를 통과한 코드를 자동으로 실제 환경에 배포
- 순서(원리)
- 예시
- 상황: 코드가 수정됨 ⇒ PR 후 Merge 함 ⇒ 바뀐 부분을 웹 사이트에 적용하기 위해 또 배포해야 함
- 원래 작업 흐름: 개발자가 직접 jar 파일을 생성하고 서버에 놓는 배포 과정을 직접 해야 함
- CD 도입 시: 수작업으로 배포할 필요가 없음
- 즉, 배포하는 과정을 Github Actions한테 시키는 것임!!
- 장점
- 개발자가 배포보다는 개발에 더욱 신경을 쓸 수 있음
- 개발자가 수작업 없이 빌드, 테스트, 배포까지 자동화할 수 있음
3. 구현 방법
Github Actions로 CI/CD 파이프라인 구축하기에서 이어서 ~
참고 자료
CI/CD
Spring + Docker + GitHub Actions를 통한 CI/CD 파이프라인 구축
Github Actions CI-CD구축(NCP, Docker, SpringBoot)
Docker + Github Actions로 SpringBoot CI/CD 구축하기