Cloud Build에 연결

이 페이지에서는 Cloud Build 구성 파일과 Secure Source Manager 저장소의 트리거 YAML 파일을 사용하여 Secure Source Manager에서 빌드를 자동으로 호출하는 방법을 자세히 설명합니다.

시작하기 전에

  1. Secure Source Manager 인스턴스를 만듭니다.
  2. Secure Source Manager 저장소 만들기
  3. Cloud Build 사용자 지정 서비스 계정을 구성합니다.

필요한 역할

Secure Source Manager 저장소를 Cloud Build에 연결하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

Secure Source Manager 역할 부여에 대한 자세한 내용은 IAM으로 액세스 제어사용자에게 인스턴스 액세스 권한 부여를 참고하세요.

필수 서비스 계정 역할

Cloud Build에서 빌드를 만들고 빌드 상태를 가져오려면 Secure Source Manager 서비스 에이전트 (service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com)에 다음 Identity and Access Management (IAM) 역할을 부여하세요.

  • Cloud Build를 사용 설정한 프로젝트에 대한 Cloud Build 편집자 역할(roles/cloudbuild.builds.editor)
  • Cloud Build 서비스 계정 또는 Cloud Build 서비스 계정이 생성된 프로젝트에 대한 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)
  • Cloud Build를 사용 설정한 프로젝트가 Secure Source Manager를 사용 설정한 프로젝트와 다른 경우 Cloud Build 프로젝트에 서비스 사용량 소비자 역할(roles/serviceusage.serviceUsageConsumer)을 부여합니다.
  • 빌드가 작업자 풀에서 실행되는 경우 Secure Source Manager 서비스 계정에 Cloud Build 프로젝트의 Cloud Build WorkerPool 사용자 역할(roles/cloudbuild.workerPoolUser)을 부여합니다.

Cloud Build가 Secure Source Manager 저장소에서 읽을 수 있도록 하려면 Cloud Build 서비스 계정에 다음 IAM 역할을 부여하세요.

사용 사례에 따라 Cloud Build 서비스 계정에 빌드를 실행하기 위한 추가 IAM 역할이 필요할 수 있습니다. 예를 들면 다음과 같습니다.

  • Cloud Logging에 빌드 로그를 저장하려면 Cloud Build 서비스 계정에 로그 작성자 역할을 부여합니다.
  • Secret Manager의 보안 비밀에 액세스하려면 Cloud Build 서비스 계정에 Secret Manager 보안 비밀 접근자(roles/secretmanager.secretAccessor) 역할을 부여합니다.

서비스 에이전트에게 IAM 역할을 부여하는 방법에 대한 자세한 내용은 단일 역할 부여 또는 취소를 참고하세요.

빌드 로그에 대한 자세한 내용은 빌드 로그 설정을 참고하세요.

빌드 구성 파일 만들기

빌드 구성 파일은 Cloud Build가 빌드 작업을 수행하는 데 필요한 필드를 정의합니다. YAML 구문을 사용하여 빌드 구성 파일을 작성할 수 있습니다.

빌드할 브랜치에 빌드 구성 파일을 만들 수 있습니다.

빌드 구성 파일을 만들려면 다음을 실행하세요.

  1. Secure Source Manager 웹 인터페이스에서 Cloud Build에 연결할 저장소를 선택합니다.
  2. Cloud Build를 사용하여 빌드할 브랜치를 선택합니다.
  3. 빌드 구성 파일을 만듭니다. 빌드 구성 파일을 만드는 방법에 대한 자세한 내용은 빌드 구성 파일 만들기의 안내를 따르세요.

  4. 변경사항을 브랜치에 커밋합니다.

트리거 파일 만들기

트리거 구성 파일은 저장소의 기본 브랜치에 만들어야 합니다.

트리거 구성 파일을 만들려면 다음 안내를 따르세요.

  1. 로컬 저장소 또는 Secure Source Manager 웹 인터페이스에서 기본 브랜치로 전환합니다.
  2. .cloudbuild/triggers.yaml 파일을 만듭니다.

  3. .cloudbuild/triggers.yaml 파일에서 트리거를 구성합니다.

    triggers:
    - name: TRIGGER_NAME
      project: PROJECT_ID
      configFilePath: CLOUD_BUILD_CONFIG_PATH
      eventType: EVENT_TYPE
      ignoredGitRefs: IGNORED_GIT_REFS
      includedGitRefs: INCLUDED_GIT_REFS
      serviceAccount: SERVICE_ACCOUNT
      includedFiles: INCLUDED_FILES
      ignoredFiles: IGNORED_FILES
      disabled: DISABLED_BOOL
      substitutions:
        _VARIABLE_NAME: VARIABLE_VALUE
        OVERRIDE_VARIABLE_NAME: OVERRIDE_VARIABLE_VALUE
    

    다음을 바꿉니다.

    • TRIGGER_NAME을 트리거의 이름으로 바꿉니다. 트리거 이름에는 영숫자 문자와 대시만 포함할 수 있으며 대시로 시작하거나 끝날 수 없습니다. 트리거 이름은 64자(영문 기준) 미만이어야 합니다.
    • PROJECT_ID를 Cloud Build를 사용 설정한 Google Cloud 프로젝트 ID로 바꿉니다. 이 필드는 선택사항입니다. 기본값은 Secure Source Manager 프로젝트입니다.
    • CLOUD_BUILD_CONFIG_PATH를 사용하고 이 트리거에 사용할 Cloud Build 구성 파일의 경로를 지정합니다. 이 필드는 선택사항입니다. 기본값은 .cloudbuild/cloudbuild.yaml입니다.
    • EVENT_TYPE을 빌드를 트리거하려는 이벤트 유형으로 바꿉니다. 옵션은 다음과 같습니다.

      • push를 지정된 브랜치로 푸시할 때 트리거
      • pull_request: 지정된 브랜치에 대한 pull 요청 시 트리거

      이 필드는 선택사항입니다. 기본값은 push입니다.

    • 빌드를 트리거할 Git 참조와 일치하는 선택적 RE2 정규 표현식 형식이 있는 INCLUDED_GIT_REFS 기본값은 비어 있습니다. 값이 비어 있으면 제한이 없음을 나타냅니다.

    • 빌드를 트리거하지 않으려는 Git 참조와 일치하는 RE2 정규 표현식 형식을 사용하는 선택적 정규 표현식이 있는 IGNORED_GIT_REFS 기본값은 비어 있습니다. 빈 값은 제한이 없음을 나타냅니다. ignoredGitRefs 필드는 includedGitRefs 필드보다 먼저 확인됩니다. 이러한 필드에 대한 자세한 내용은 트리거 파일 스키마를 참고하세요.

    • SERVICE_ACCOUNTCloud Build 서비스 계정과 함께 사용하여 빌드에 사용할 수 있습니다(projects/PROJECT_ID/serviceAccounts/ACCOUNT 형식). ACCOUNT을 서비스 계정의 이메일 주소 또는 고유 ID로 바꿉니다. 권장사항은 사용자 지정 서비스 계정을 구성하는 것입니다. 기존 Cloud Build 서비스 계정은 제한사항으로 인해 사용할 수 없습니다.

    • INCLUDED_FILES을 빌드를 트리거하려는 파일과 일치하는 선택적 RE2 형식 정규 표현식으로 바꿉니다.

      변경된 파일 중 하나가 ignoredFiles 필터 필드와 일치하지 않고 변경된 파일이 includedFiles 필터 필드와 일치하면 빌드가 트리거됩니다. 기본값은 비어 있습니다. 값이 비어 있으면 제한이 없음을 나타냅니다.

    • IGNORED_FILES을 빌드를 트리거하지 않으려는 파일과 일치하는 선택적 RE2 형식 정규 표현식으로 바꿉니다.

      커밋의 모든 변경된 파일이 이 필터 필드와 일치하면 빌드가 트리거되지 않습니다. 기본값은 비어 있습니다. 값이 비어 있으면 제한이 없음을 나타냅니다.

    • DISABLED_BOOLtrue로 바꿔 트리거를 사용 중지하거나 false로 바꿔 트리거를 사용 설정합니다. 이 필드는 선택사항입니다. 기본값은 false입니다.

    • VARIABLE_NAME을 트리거 파일에 도입하려는 변수의 이름으로 바꿉니다.

    • VARIABLE_VALUE을 변수 값으로 바꿉니다.

    • OVERRIDE_VARIABLE_NAME을 Secure Source Manager 기본 대체 변수 이름으로 바꿉니다. 사용 가능한 기본 대체 변수에 관한 자세한 내용은 트리거 파일 스키마의 대체 섹션을 참고하세요.

    • OVERRIDE_VARIABLE_VALUE를 기본 대체 변수의 기본값을 재정의할 값으로 바꿉니다.

  4. 트리거 구성 파일을 기본 브랜치에 커밋합니다.

    트리거 파일이 커밋되면 Secure Source Manager는 트리거 파일의 구성을 기반으로 빌드를 트리거합니다.

    Secure Source Manager는 다음 유형의 이벤트의 구성 파일과 연결된 커밋 SHA 또는 Git 참조를 읽습니다.

    • push 이벤트의 경우 푸시가 완료되면 Secure Source Manager가 커밋 SHA 또는 Git 참조를 읽습니다.
    • pull_request 이벤트의 경우 Secure Source Manager는 가져오기 요청 변경사항이 가져와질 때 커밋 SHA 또는 Git 참조를 읽습니다.

빌드 상태 보기

푸시 또는 풀 요청 이벤트에 의해 빌드가 트리거되면 커밋 및 빌드 상태가 Secure Source Manager 웹 인터페이스에 표시됩니다.

빌드 상태의 가능한 값은 다음과 같습니다.

  • 성공SUCCESS: 빌드가 완료되었습니다.
  • 경고경고: 빌드하려고 할 때 문제가 발생했습니다.
  • 실패실패: 실행 중에 빌드가 실패했습니다.

트리거 파일에 구성된 트리거에서 성공적인 상태 확인이 필요하도록 브랜치 보호 규칙을 구성하면 빌드가 실패한 커밋이 중요한 브랜치로 병합되지 않도록 할 수 있습니다. 브랜치 보호에 대해 자세히 알아보려면 브랜치 보호 개요를 참고하세요.

푸시 이벤트의 빌드 상태를 확인하려면 다음 단계를 따르세요.

  1. Secure Source Manager 웹 인터페이스에서 저장소로 이동합니다.

    가장 최근의 푸시 이벤트로 빌드가 트리거된 경우 상태가 커밋 SHA 옆에 표시됩니다. 해당 상태에 대한 세부정보를 보려면 상태를 클릭합니다.

  2. 이전 커밋의 빌드 상태를 보려면 커밋을 선택하여 커밋 기록을 확인한 다음 세부정보를 보려는 상태를 클릭합니다.

풀 요청 이벤트의 빌드 상태를 보려면 다음 단계를 따르세요.

  1. Secure Source Manager 웹 인터페이스에서 Pull requests를 클릭합니다.
  2. 확인하려는 풀 요청을 클릭합니다.

    풀 요청에 의해 빌드가 트리거된 경우 모든 검사가 성공했습니다 또는 일부 검사에서 경고가 보고되었습니다라는 제목의 섹션이 표시됩니다.

문제 해결

Secure Source Manager와 연결할 때 Cloud Build 오류를 진단하고 해결하는 방법을 알아보려면 트리거 파일이 빌드를 트리거하지 않음을 참고하세요.

다음 단계