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

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

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

    • SERVICE_ACCOUNT를 빌드에 사용할 Cloud 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는 pull 요청 변경사항이 가져온 경우 커밋 SHA 또는 Git 참조를 읽습니다.

빌드 상태 보기

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

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

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

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

푸시 이벤트의 빌드 상태를 보려면 다음 안내를 따르세요.

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

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

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

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

  1. Secure Source Manager 웹 인터페이스에서 풀 요청 을 클릭합니다.
  2. 보려는 pull 요청을 클릭합니다.

    풀 요청에 의해 빌드가 트리거된 경우 **모든 검사가 완료됨** 또는 **일부 검사에서 경고가 보고됨** 이라는 제목의 섹션이 표시됩니다.

문제 해결

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

다음 단계