CI/CD의 개념과 자동화에 대해 정리합니다.
Continuous Integration / Continuous Delivery(또는 Deployment)
지속적인 통합 / 지속적인 제공(또는 배포)
딜리버리는 개발자의 레포지토리에 자동으로 업로드 되는 과정까지를 의미하고, 디플로이먼트는 배포까지 자동으로 진행한다는 개념 상의 차이가 있다고 한다... 설명 자료에서는 대체로 같은 맥락에서 사용되는 것 같다
'통합'은 기존의 코드에 수정 및 개선된 코드를 병합함을 의미한다
- 지속적으로 코드를 병합하는게 왜 안정적인 개발과 연결될까?
Continuous Integration : 소스코드 작성 ~ 빌드 ~ 코드 테스트 ~ 기존 코드에 병합
Continuous Deployment : 코드 테스트 ~ 개발환경에서 실행 ~ 실제 배포
까지의 과정을 지속적으로 실행함을 의미한다.
따라서, CI/CD 자동화를 통해 사용자에게 꾸준히 개선되는 서비스를 안정적으로 제공할 수 있다
1) VScode의 터미널에서 git 업로드 (git add ➤ git commit ➤ git push)
2) VScode의 터미널에서 docker 이미지를 GCP에 업로드
(docker-compose -f docker-compose.prod.yaml build ➤ push)
3) GCP - Container Registry 에 저장된 도커이미지 업데이트 확인
4) GCP - 쿠버네티스 접속 - cloud shell 접속 - 이미지 업데이트
(kubectl set image deployment/[실행중인 deployment 명] [컨테이너 이름]=[container registry에 등록된 image 주소])
1) cloudbuild.yaml 파일 생성
2) GCP의 CloudBuild : Github 트리거 생성(깃허브 브랜치로 호출을 트리거로 설정)
3) GCP의 CloudBuild - 설정 : Kubernetes Engine 사용 설정
4) cloudbuild.yaml 파일에서 배포할 docker-compose.prod.yaml 파일의 경로를 수정 후, 터미널에서 git 업로드
(cloudbuild.yaml 파일과 docker-compose.prod.yaml 파일의 이미지 버전은 동일하게 설정해야함!)