Cloud Build로 빌드 자동화

이 주제에서는 Cloud Build 및 Cloud Source Repositories를 사용하여 빌드를 자동화하는 방법을 설명합니다.

사용자가 Cloud Source Repositories에 저장된 파일 변경사항을 푸시할 때마다 새 이미지가 자동으로 빌드되도록 Cloud Build를 구성할 수 있습니다. 자동 빌드를 시작하는 이벤트를 빌드 트리거라고 합니다. 이러한 트리거는 컨테이너 이미지를 최신 상태로 유지하는 데 유용합니다. 또한 기능 브랜치를 빌드 및 테스트하는 데도 사용됩니다.

빌드 트리거는 Dockerfile 또는 빌드 구성 파일을 기준으로 빌드를 수행할 수 있습니다.

Dockerfile 사용

빌드 구성에 Dockerfile을 사용하려면 Dockerfile 디렉터리를 지정하고 생성된 이미지의 이름을 제공해야 합니다. Dockerfile 생성에 대한 자세한 내용은 Docker 문서를 참조하세요.

Dockerfile과 이미지 이름을 제공하면 빌드가 실행하는 docker build 명령어의 미리보기와 트리거 구성 요약이 표시됩니다.

빌드 구성 파일 사용

빌드 구성에 빌드 구성 파일을 사용하려면 빌드 구성 파일의 위치를 제공해야 합니다.

위치를 설정하면 트리거 요약이 표시됩니다.

시작하기 전에

추가 정보

  • 빌드 트리거는 저장소의 부분 클론을 사용합니다. 부분 클론에서는 자동 빌드를 트리거한 단일 커밋만 작업공간에서 체크아웃됩니다. 저장소 내역을 추가로 포함하는 방법에 대한 자세한 내용은 부분 클론 해제를 참조하세요.

  • GitHub 또는 Bitbucket과 같은 다른 호스트 Git 제공업체를 사용하지만 저장소를 Cloud Source Repositories에 미러링해야 하는 경우에는 작업을 수행할 Google Cloud 프로젝트에 대한 cloudbuilds.builds.create 권한이 있어야 합니다. 일반적으로 이 권한은 cloudbuild.builds.editor 역할을 통해 부여됩니다.

    외부 저장소의 빌드 트리거를 처음 설정하는 경우에는 해당 저장소에 승인을 설정해야 합니다. 자세한 내용은 원격으로 저장소 추가를 참조하세요.

    외부 저장소를 설정하면 Cloud Source Repositories가 저장소를 미러링합니다.

  • Cloud Build의 할당량 및 한도에 대한 자세한 내용은 Cloud Build 문서의 할당량 및 한도를 참조하세요.

빌드 트리거 만들기

Console

  1. Google Cloud Console에서 트리거 페이지를 엽니다.

    트리거 페이지 열기

  2. 페이지 상단의 프로젝트 선택기 드롭다운 메뉴에서 프로젝트를 선택합니다.

  3. 열기를 클릭합니다.

  4. 트리거 만들기를 클릭합니다.

  5. 다음 트리거 설정을 입력합니다.

    • 이름: 트리거 이름을 입력합니다.

    • 설명(선택사항): 트리거에 대한 설명을 입력합니다.

    • 이벤트: 트리거를 호출할 저장소 이벤트를 선택합니다.

      • 브랜치로 푸시: 특정 브랜치 대한 커밋에서 빌드를 시작하도록 트리거를 설정합니다.

      • 새 태그 푸시: 특정 태그가 포함된 커밋에서 빌드를 시작하도록 트리거를 설정합니다.

    • 소스: 이벤트를 감시할 저장소와 해당 분기 또는 태그를 선택합니다.

      • 저장소: 사용 가능한 저장소 목록에서 원하는 저장소를 선택합니다. 새 저장소를 연결하려면 소스 저장소에 연결을 참조하세요.

      빌드가 실행되면 저장소의 콘텐츠가 Cloud Build에서 사용되는 기본 작업 디렉터리인 /workspace에 복사됩니다. 빌드 구성 개요 페이지에서 작업 디렉터리에 대해 자세히 알아보세요.

      • 분기 또는 태그: 일치시킬 분기 또는 태그 값으로 정규 표현식을 지정합니다. 슬래시(/)는 태그에 사용할 수 없습니다. 허용되는 정규 표현식 구문에 대한 자세한 내용은 RE2 구문을 참조하세요.
    • 구성: 원격 저장소에 있는 빌드 구성 파일을 선택하거나 빌드에 사용할 인라인 빌드 구성 파일을 만듭니다.

      • 유형: 빌드에 사용할 구성의 유형을 선택합니다.
        • Cloud Build 구성 파일(yaml 또는 json): 구성에 대해 빌드 구성 파일을 사용합니다.
        • Dockerfile: 해당 구성에 Dockerfile을 사용합니다.
        • 빌드팩: 구성에 빌드팩을 사용합니다.
      • 위치: 구성의 위치를 지정합니다.

        • 저장소: 구성 파일이 원격 저장소에 있으면 빌드 구성 파일의 위치, Dockerfile 디렉터리 또는 빌드팩 디렉터리를 제공합니다. 빌드 구성 유형이 Dockerfile 또는 빌드팩이면 결과 이미지의 이름을 제공하고, 선택적으로 빌드의 제한 시간을 제공해야 합니다. Dockerfile 또는 빌드팩 이미지 이름을 제공한 경우 빌드가 실행할 docker build 또는 pack 명령어의 미리보기가 표시됩니다.
        • 빌드팩 환경 변수(선택사항): buildpacks를 구성 유형으로 선택한 경우 팩 환경 변수 추가를 클릭하여 빌드팩 환경 변수 및 값을 지정합니다. 빌드팩 환경 변수에 대해 자세히 알아보려면 환경 변수를 참조하세요.
        • 인라인: Cloud Build 구성 파일(yaml 또는 json)을 구성 옵션으로 선택한 경우 빌드 구성을 인라인으로 지정할 수 있습니다. YAML 또는 JSON 구문을 사용하여 Google Cloud 콘솔에서 빌드 구성 파일을 작성하려면 편집기 열기를 클릭합니다. 빌드 구성을 저장하려면 완료를 클릭합니다.

    • 서비스 계정: 트리거를 호출할 때 사용할 서비스 계정을 선택합니다. 서비스 계정을 선택하지 않으면 기본 Cloud Build 서비스 계정이 사용됩니다.

  6. 만들기를 클릭하여 빌드 트리거를 저장합니다.

gcloud

다음 명령어를 실행합니다.

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

각 항목의 의미는 다음과 같습니다.

  • REPO_NAME은 저장소 이름입니다.
  • BRANCH_PATTERN은 빌드를 호출할 저장소의 분기 이름입니다.
  • TAG_PATTERN은 빌드를 호출할 저장소의 태그 이름입니다.
  • BUILD_CONFIG_FILE은 빌드 구성 파일의 경로입니다.
  • SERVICE_ACCOUNT(미리보기)는 서비스 계정과 연결된 이메일입니다. 이 플래그를 포함하지 않으면 기본 Cloud Build 서비스 계정이 사용됩니다.
  • [선택사항] --require-approval은 승인이 필요하도록 트리거를 구성하는 데 포함할 플래그입니다.

플래그 전체 목록은 Cloud Source Repositories에 대한 트리거를 만드는 방법에 대한 gcloud 참조를 참조하세요.

Cloud Source Repositories를 사용하여 트리거를 만들기 위해 gcloud 명령어를 실행하면 다음과 유사한 출력이 표시됩니다.

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

빌드 트리거 보기

Google Cloud Console에서 트리거를 보려면 Cloud Build 트리거 페이지를 엽니다.

Cloud Source Repositories에서 특정 프로젝트의 트리거를 보려면 오른쪽 상단의 설정 을 클릭한 후 Cloud Build 트리거를 클릭합니다.

빌드 트리거 건너뛰기

소스 코드를 변경하되, 문서 또는 구성 파일을 업데이트할 때와 같이 빌드를 트리거하지 않아야 하는 경우도 있습니다.

이러한 경우에는 커밋 메시지에 [skip ci] 또는 [ci skip]을 포함시킬 수 있습니다. 그러면 빌드가 트리거되지 않습니다.

예를 들면 다음과 같습니다.

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

나중에 해당 커밋에서 빌드를 실행하려면 트리거 실행 버튼을 사용하면 됩니다.

부분 복제 해제

Git 저장소의 소스를 빌드할 때는 Cloud Source Repositories가 저장소의 부분 클론을 수행합니다. Cloud Source Repositories가 부분 클론을 수행할 때는 빌드를 트리거한 단일 커밋만 작업공간에서 체크아웃한 다음 해당 소스에서 빌드합니다. Cloud Source Repositories는 다른 브랜치나 내역을 체크아웃하지 않습니다. 이는 효율성을 고려한 것으로, 단일 커밋에서 빌드하기 위해 Cloud Source Repositories가 전체 저장소와 내역을 가져오는 동안 빌드가 지연되지 않습니다.

빌드에 저장소 내역을 추가로 포함하려면 빌드 구성 파일에 빌드 단계를 추가하여 '부분 클론을 해제'합니다. 예를 들면 다음과 같습니다.

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

git fetch에 대한 자세한 내용은 git 참조를 확인하세요. 빌드 구성 파일 작성 방법은 빌드 구성 개요를 참조하세요.

다음 단계