cloudbuild.yaml을 통한 CI/CD, 트리거

임동혁 Ldhbenecia·2024년 6월 29일

Devops & Infra

목록 보기
1/4
post-thumbnail

CI/CD에 대한 설명

CI/CD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment)를 의미한다. 이는 소프트웨어 개발과 배포 과정을 자동화하여, 코드 변경이 더 빠르고 안전하게 배포될 수 있도록 하는 방법론이다.

  1. 지속적 통합(CI): 개발자들이 코드 변경을 주기적으로 저장소에 병합한다.
    병합된 코드는 자동으로 빌드되고 테스트되어 코드의 일관성을 유지하고, 새로운 버그가 빠르게 발견된다.
  2. 지속적 배포(CD): 빌드된 코드가 자동으로 배포 파이프라인을 통해 스테이징 환경 또는 프로덕션 환경에 배포된다. 이는 코드가 항상 배포될 준비가 되어 있음을 보장한다.

Cloud Build와 cloudbuild.yaml

  • 장점:
    • 유연성: 빌드, 테스트, 배포의 각 단계를 세밀하게 정의할 수 있다.
    • 복잡한 파이프라인 지원: 여러 빌드 단계, 병렬 빌드, 다양한 테스트 스크립트 등을 포함할 수 있다.
    • 통합과 확장성: 다른 Google Cloud 서비스와의 통합이 용이하고, 복잡한 배포 전략을 지원한다.

Cloud Build:

  • 완전한 CI/CD 파이프라인을 지원.
  • 세밀하고 복잡한 빌드, 테스트, 배포 단계 설정 가능.
  • 유연성과 확장성 제공.

CloudBuild.yaml 초안

steps:
  # Build the container image
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/${project-id}/echo-be:$COMMIT_SHA', '.']

  # Push the container image to Container Registry
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/${project-id}/echo-be:$COMMIT_SHA']

  # Deploy container image to Cloud Run
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: gcloud
    args:
      - 'run'
      - 'deploy'
      - 'echo-be'
      - '--image'
      - 'gcr.io/${project-id}/echo-be:$COMMIT_SHA'
      - '--region'
      - 'asia-northeast3'

images:
  - 'gcr.io/echo-cloud-427211/${project name}:$COMMIT_SHA'

CI/CD 파이프라인의 단계

  1. 지속적 통합(CI):
    • 코드 변경 감지 및 트리거: 코드 변경이 발생하면(예: GitHub 저장소에 푸시될 때) 빌드 프로세스가 자동으로 시작된다.
    • 빌드 단계: docker build 명령을 사용하여 코드가 빌드된다.
      이 단계에서 코드가 올바르게 빌드되는지 확인하며, 종속성이 제대로 해결되고 빌드 오류가 없는지 확인한다.
    • 테스트 단계: 빌드된 코드에 대해 자동화된 테스트를 실행하여 코드가 예상대로 작동하는지 확인한다. (현재 cloudbuild.yaml 파일에는 테스트 단계가 포함되어 있지 않지만, 이 단계를 추가하여 CI를 강화할 수 있다.)
  2. 지속적 배포(CD):
    • 이미지 푸시: 빌드된 Docker 이미지를 Container Registry에 푸시한다. 이 단계 이후 코드가 성공적으로 빌드되었음을 나타낸다.
    • 배포 단계: Cloud Run에 이미지를 배포한다. 이는 새로운 코드 변경 사항이 프로덕션 환경에 배포되어 실제 서비스에 반영되도록 한다.

CI 지원 부분

  1. 코드 변경 감지 및 빌드 트리거:
    • Cloud Build 트리거는 GitHub 저장소의 특정 브랜치에 푸시될 때마다 cloudbuild.yaml 파일을 실행하여 빌드 프로세스를 시작한다.
  2. 빌드 단계 (docker build):
    • 이 단계는 코드가 Docker 이미지로 빌드되는 단계이다.
      코드가 빌드될 때 오류가 발생하면 빌드가 실패한다. 이는 코드의 무결성을 보장하는 역할을 한다.

CD 지원 부분

  1. 이미지 푸시 (docker push):
    • 빌드된 Docker 이미지를 Container Registry에 푸시한다. 이는 코드가 성공적으로 빌드되었음을 나타낸다.
  2. 배포 단계 (gcloud run deploy):
    • 새로운 Docker 이미지를 Cloud Run에 배포한다. 이는 변경된 코드가 실제 서비스 환경에 배포되도록 한다.

트리거 콘솔에서 설정

위의 사진과 같이 어떠한 상황에서 트리거를 발생시킬지 정할 수 있다.
나의 경우 cloudBuild.yaml 파일을 생성해서 CI 설정을 하기 때문에 Cloud Build 구성 파일로 설정하였다.

0개의 댓글