웹훅 이벤트에 대한 응답으로 빌드 자동화

Cloud Build를 사용하면 수신 웹훅 이벤트를 인증하고 수락할 수 있는 웹훅 트리거를 정의할 수 있습니다. 커스텀 URL로 전송되는 이러한 이벤트를 이용하면 Bitbucket.com, Bitbucket 서버, GitLab과 같은 외부 소스 코드 관리 시스템과 외부 이벤트를 웹훅 이벤트를 통해 Cloud Build에 직접 연결할 수 있습니다.

웹훅 트리거를 사용하면 트리거를 만들 때 소스를 지정하는 대신 인라인 빌드 구성 파일을 정의할 수 있습니다. 인라인 빌드 구성을 사용하면 Git 작업을 제어하고 나머지 빌드를 정의할 수 있습니다.

이 페이지에서는 웹훅 이벤트에 대한 응답으로 빌드를 자동화하는 웹훅 트리거를 만드는 방법을 간략하게 설명합니다.

시작하기 전에

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

  • 이 페이지에서 gcloud 명령어를 사용하려면 Google Cloud CLI를 설치합니다.

웹훅 트리거 만들기

콘솔

Google Cloud Console을 사용하여 웹훅 트리거를 만들려면 다음 안내를 따르세요.

  1. 트리거 페이지 열기:

    빌드 트리거 페이지 열기

  2. 페이지 상단에서 프로젝트를 선택하고 열기를 클릭합니다.

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

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

    • 이름: 트리거의 이름입니다.
    • 리전: 트리거의 리전을 선택합니다.

      • 트리거와 연결된 빌드 구성 파일이 비공개 풀을 지정하는 경우 Cloud Build는 비공개 풀을 사용하여 빌드를 실행합니다. 이 경우 트리거에 지정하는 리전은 비공개 풀을 만든 리전과 일치해야 합니다.
      • 트리거와 연결된 빌드 구성 파일에서 비공개 풀을 지정하지 않으면 Cloud Build가 기본 풀을 사용하여 동일한 리전에서 빌드를 실행합니다.
    • 설명(선택사항): 트리거에 대한 설명입니다.

    • 이벤트: 웹훅 이벤트를 선택하여 수신 웹훅 이벤트에 대한 응답으로 빌드를 시작하도록 트리거를 설정합니다.

    • 웹훅 URL: 웹훅 URL을 사용하여 수신 웹훅 이벤트를 인증합니다.

      • 보안 비밀: 수신 웹훅 이벤트를 인증하려면 보안 비밀이 필요합니다. 새 보안 비밀을 만들거나 기존 보안 비밀을 사용할 수 있습니다. 이 보안 비밀은 SSH 키와 연관된 보안 비밀과 구분됩니다.

        새 보안 비밀을 만들려면 다음 안내를 따르세요.

        1. 새 보안 비밀 사용(Cloud Build에서 생성됨)을 선택합니다.
        2. 보안 비밀 만들기를 클릭합니다.

          웹훅 보안 비밀 만들기 팝업 상자가 표시됩니다.

        3. 보안 비밀 이름 필드에 보안 비밀의 이름을 입력합니다.

        4. 보안 비밀 만들기를 클릭하여 보안 비밀을 저장합니다. 이 보안 비밀은 Secret Manager에 자동으로 생성되고 저장됩니다.

        기존 보안 비밀을 사용하려면 다음 안내를 따르세요.

        1. 기존 보안 비밀을 사용하거나 직접 보안 비밀 만들기를 선택합니다.
        2. 보안 비밀 필드의 드롭다운 메뉴에서 사용하려는 보안 비밀의 이름을 선택하거나 안내에 따라 리소스 ID로 보안 비밀을 추가합니다.
        3. 보안 비밀 버전 필드의 드롭다운 메뉴에서 보안 비밀 버전을 선택합니다.

        기존 보안 비밀을 사용하는 경우 Cloud Build 서비스 계정인 service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com에 Secret Manager 보안 비밀 접근자 역할을 수동으로 부여해야 할 수 있습니다. 자세한 내용은 서비스 계정에 Secret Manager 역할 부여를 참조하세요.

      보안 비밀을 만들거나 선택하면 웹훅 URL 미리보기가 표시됩니다. URL에는 Cloud Build에서 생성한 API 키와 보안 비밀이 포함됩니다. Cloud Build에서 API 키를 검색할 수 없는 경우 API 키를 URL에 수동으로 추가하거나, 아직 키가 없는 경우 API 키를 가져오는 방법을 알아보세요.

      POST 메서드를 사용해서 HTTP 요청을 수행하여 URL을 사용하여 웹훅 이벤트를 호출할 수 있습니다.

      다음 명령어를 사용하여 웹훅 이벤트를 호출합니다.

      curl -X POST -H "Content-type: application/json" "https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/triggers/${TRIGGER_NAME}:webhook?key=${API_KEY}&secret=${SECRET_VALUE}&trigger=${TRIGGER_NAME}&projectId=${PROJECT_ID}" -d "{}"
      

      이 단계를 완료하면 Secret Manager 보안 비밀 접근자 역할이 Cloud Build 서비스 에이전트인 service-${PROJECT_NUMBER}@gcp-sa-cloudbuild.iam.gserviceaccount.com에 자동으로 부여됩니다. 이 역할이 서비스 에이전트에 자동으로 추가되지 않으면 서비스 계정에 Secret Manager 역할 부여에 설명된 다음 단계를 완료합니다.

    • 소스(선택사항): 웹훅 트리거가 실행될 때 빌드할 소스를 선택합니다. 인라인 빌드 구성을 지정하는 경우 다음 소스를 지정할 필요가 없습니다. 1세대 또는 2세대를 소스로 지정할 수 있습니다. 자세한 내용은 Cloud Build 저장소를 참조하세요.

      • 저장소: 사용 가능한 저장소 목록에서 원하는 저장소를 선택합니다.

      • 브랜치 또는 태그: 일치시킬 브랜치 또는 태그 값으로 정규 표현식을 지정합니다. 허용되는 정규 표현식 구문에 대한 자세한 내용은 RE2 구문을 참조하세요.

      • 댓글 제어: Pull 요청(GitHub 앱 전용)이벤트로 선택한 경우 다음 옵션 중 하나를 선택하여 트리거로 빌드를 자동으로 실행할지 여부를 제어합니다.

        • 소유자 및 공동작업자를 제외하고 필수: 저장소 소유자 또는 공동작업자가 pull 요청을 만들거나 업데이트하면 트리거로 빌드가 자동으로 실행됩니다. 외부 공동작업자가 작업을 시작하면 소유자 또는 공동작업자가 pull 요청에서 /gcbrun 댓글을 작성한 후에만 빌드가 실행됩니다.

        • 필수: 공동작업자가 pull 요청을 만들거나 업데이트하면 소유자 또는 공동작업자가 pull 요청에서 /gcbrun 댓글을 작성한 후에만 빌드가 실행됩니다. 빌드는 pull 요청이 변경될 때마다 실행됩니다.

        • 필수 아님: 공동작업자가 pull 요청을 만들거나 업데이트하면 트리거로 빌드가 자동으로 실행됩니다.

    • 구성: 원격 저장소에 있는 빌드 구성 파일을 선택하거나 빌드에 사용할 인라인 빌드 구성 파일을 만듭니다. 소스 저장소를 지정하지 않은 경우, 인라인 빌드 구성 파일을 구성 옵션으로 선택해야 합니다.

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

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

      다음 예시에서는 인라인 빌드 구성 파일 로그가 'hello world'를 반영합니다.

       steps:
       - name: 'ubuntu'
         args: ['echo', 'hello world']
      
    • 대체(선택사항): 빌드 구성 파일을 빌드 구성 옵션으로 선택하거나 인라인 빌드 구성 파일을 생성한 경우 이 필드를 사용하여 트리거별 대체 변수를 정의하도록 선택할 수 있습니다. 대체 변수 값을 정의할 때 페이로드 바인딩을 사용하여 데이터를 가져올 수도 있습니다.

    • 필터(선택사항): 트리거가 대체 변수를 기반으로 빌드를 실행할지 여부를 결정하는 트리거 내에서 규칙을 만들 수 있습니다.

  5. 만들기를 클릭하여 빌드 트리거를 만듭니다.

gcloud

(선택사항) API 키 가져오기

수신 웹훅 이벤트를 인증하려면 API 키가 필요합니다.

API 키를 가져오려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔의 사용자 인증 정보 페이지를 엽니다.

    사용자 인증 정보 페이지 열기

  2. 사용자 인증 정보 만들기를 클릭합니다.

  3. API 키를 클릭합니다.

    API 키가 생성된 대화상자가 표시됩니다. API 키를 기록해 둡니다.

  4. 제품 애플리케이션에 대해 키를 제한하려면 키 제한을 클릭하여 키 보호를 위한 추가 단계를 완료합니다. 그렇지 않으면 닫기를 클릭합니다.

    키를 제한하는 방법을 알아보려면 API 키 제한 적용을 참조하세요.

(선택사항) 서비스 계정에 Secret Manager 역할 부여

Cloud Build는 보안 비밀 구성 중 역할이 필요한 서비스 계정에 Secret Manager 보안 비밀 접근자 역할을 자동으로 부여합니다. 필요한 서비스 계정에 이 역할이 자동으로 부여된 것이 표시되지 않으면 다음 단계를 완료하여 서비스 계정에서 보안 비밀에 액세스할 수 있도록 역할을 직접 추가합니다.

  1. Google Cloud Console에서 IAM 페이지를 엽니다.

    IAM 페이지 열기

  2. 선택사항: Google 제공 계정을 보려면 Google 제공 역할 부여 포함 체크박스를 선택합니다.

  3. 역할을 부여할 빌드 서비스 계정을 기록해 둡니다.

  4. Google Cloud Console에서 Secret Manager 페이지를 엽니다.

    Secret Manager 페이지 열기

  5. 보안 비밀 이름을 클릭합니다.

    보안 비밀 세부정보 페이지가 표시됩니다.

    1. 권한 탭을 클릭합니다.

    2. 액세스 권한 부여를 클릭합니다.

      액세스 권한 부여 패널이 표시됩니다.

    3. 주 구성원 추가 섹션에서 빌드 서비스 계정과 연결된 이메일을 추가합니다.

    4. 역할 할당 섹션에서 Secret Manager > Secret Manager 보안 비밀 접근자를 선택합니다.

    5. 저장을 클릭합니다.

다음 단계