Pub/Sub 이벤트에 대한 응답으로 빌드 자동화

Cloud Build Pub/Sub 트리거를 사용하면 Pub/Sub로 게시된 Google Cloud 이벤트에 대한 응답으로 빌드를 실행할 수 있습니다. Pub/Sub 이벤트의 정보를 사용하여 빌드를 매개변수화하고 이벤트에 대한 응답으로 빌드를 실행해야 하는지 결정합니다. Pub/Sub 주제를 리슨하도록 Pub/Sub 트리거를 구성할 수 있습니다.

이 페이지에서는 Artifact Registry, Container Registry(지원 중단됨), Cloud Storage에서 이벤트에 대한 응답으로 빌드를 자동화하도록 Pub/Sub 트리거를 만드는 방법을 설명합니다.

제한사항

VPC 서비스 제어를 사용하는 경우 Cloud Build Pub/Sub 트리거는 지원되지 않습니다.

시작하기 전에

  • Enable the Cloud Build API.

    Enable the API

  • 소스 코드에 빌드 구성 파일 또는 저장소의 Dockerfile이 포함되어 있는지 확인합니다.
  • 이 페이지에서 gcloud 명령어를 사용하려면 Google Cloud CLI를 설치합니다.

Artifact Registry 이벤트에 응답하는 빌드 트리거 만들기

이미지가 푸시되거나, 태그 지정되거나, 삭제될 때와 같은 Artifact Registry 이벤트에 응답하는 Pub/Sub 트리거를 만들 수 있습니다. 이 섹션에서는 새 태그가 기존 이미지에 푸시될 때 빌드를 호출하는 Pub/Sub 트리거를 만드는 방법을 설명합니다. Artifact Registry에 익숙하지 않으면 Artifact Registry 개요를 참조하세요.

콘솔

Google Cloud Console을 사용하여 Artifact Registry에서 기존 이미지에 푸시되는 새 태그를 리슨하는 트리거를 만들려면 다음 안내를 따르세요.

  1. 트리거 페이지 열기:

    트리거 페이지 열기

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

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

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

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

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

    • 이벤트: 트리거를 호출할 이벤트로 Pub/Sub 메시지를 선택합니다.

    • 구독: 트리거 이벤트로 구독하려는 Pub/Sub 주제를 선택합니다. 드롭다운 메뉴에 프로젝트의 모든 기존 주제가 표시됩니다.

      • Pub/Sub 주제: 드롭다운 메뉴에서 gcr 주제를 선택하거나 Pub/Sub 알림 구성의 안내에 따라 주제를 수동으로 만듭니다.
    • 소스: Pub/Sub 트리거가 실행될 때 빌드할 소스를 선택합니다. 1세대 또는 2세대를 소스로 지정할 수 있습니다.

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

      • 브랜치 또는 태그: 일치시킬 브랜치 또는 태그 값으로 정규 표현식을 지정합니다. 허용되는 정규 표현식 구문에 대한 자세한 내용은 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 콘솔에서 빌드 구성 파일을 작성하려면 편집기 열기를 클릭합니다. 빌드 구성을 저장하려면 완료를 클릭합니다.

    • 대체(선택사항): 빌드 구성 옵션으로 빌드 구성 파일을 선택한 경우, 이 필드를 사용하여 트리거 특정 대체 변수를 정의하도록 선택할 수 있습니다.

      다음 예시에서는 gcr 이벤트와 연관된 페이로드 및 작업에서 이미지 태그 이름을 가져옵니다. 이렇게 하려면 페이로드 바인딩을 사용하여 대체 변수를 만듭니다.

      아래에서 다음 변수 및 값을 지정합니다.

      변수 이름 변수 값
      _IMAGE_TAG $(body.message.data.tag)
      _ACTION $(body.message.data.action)

      body.message는 게시자가 게시하고 구독자가 소비하는 PubSubMessage를 참조합니다. Pub/Sub 알림 페이로드 예시를 더 살펴보려면 알림 예시를 참조하세요.

    • 필터(선택사항): 대체 변수에 필터를 지정하여 수신 페이로드에 대한 응답으로 트리거가 빌드를 실행할지 여부를 결정하는 필터를 트리거 내에 만들 수 있습니다. 빌드를 실행하려면 필터 표현식이 true로 평가되어야 합니다.

      여러 메시지가 포함된 주제에 대해 Pub/Sub 트리거를 설정할 때는 필터링을 사용하는 것이 좋습니다. 필터를 사용하면 수신 Pub/Sub 메시지에 대한 응답으로 실행되는 빌드를 정밀하게 제어할 수 있습니다. 필터 없이 트리거를 설정할 때와 관련된 위험 요소들에 대해 자세히 알아보려면 필터링되지 않은 트리거와 연관된 위험을 참조하세요.

      다음 예시에서는 새 태그가 기존 이미지에 푸시될 때 트리거로 빌드를 실행합니다. 필터 조건 연산자를 사용하여 _IMAGE_TAG 변수가 기존 태그 이름과 일치하는지 그리고 새로 추가된 데이터를 찾기 위해 _ACTION 변수가 INSERT와 일치하는지 확인합니다.

      필터로 다음을 지정합니다.

      • _IMAGE_TAG != ""
      • _ACTION == INSERT

      Pub/Sub 트리거의 필터링 구문에는 표현식 평가를 위해 Common Expression Language(CEL)가 사용됩니다. CEL에 대한 자세한 내용은 cel-spec 저장소를 참조하세요.

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

gcloud

Artifact Registry에서 gcloud 명령어를 사용하여 기존 이미지에 푸시된 새 태그를 리슨하는 트리거를 만들려면 다음 안내를 따르세요.

  1. 터미널 창을 엽니다.
  2. gcloud 명령어를 실행하여 프로젝트에서 빌드 트리거를 만듭니다. 아래 예시에서는 태그가 prod와 일치하고 대체 변수 _IMAGE_TAG로 정의된 대로 지정된 페이로드를 기준으로 작업이 INSERT와 일치하는 빌드에 응답하도록 트리거가 구성됩니다.

     gcloud builds triggers create pubsub \
       --region=REGION \
       --name=TRIGGER_NAME \
       --repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME \
       --topic=projects/PROJECT_ID/topics/TOPIC_NAME \
       --build-config=BUILD_CONFIG \ # or --inline-config=INLINE_BUILD_CONFIG
       --substitutions=\
         '_IMAGE_TAG_="$(body.message.data.tag)",' \
         '_ACTION="$(body.message.data.action)"' \
       --subscription-filter='_IMAGE_TAG != "" && _ACTION == "INSERT"' \
       --tag=TAG_NAME  # or --branch=BRANCH_NAME
    

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

  • REGION은 트리거의 리전입니다.
  • TRIGGER_NAME은 트리거의 이름입니다.
  • PROJECT_ID는 클라우드 프로젝트의 ID입니다.
  • CONNECTION_NAME: 호스트 연결의 이름입니다.
  • REPO_NAME은 저장소의 이름입니다.
  • TOPIC_NAME은 구독한 Pub/Sub 주제의 이름입니다.
  • BUILD_CONFIG는 빌드 구성 파일의 경로입니다.
  • INLINE_BUILD_CONFIG은 인라인 빌드 구성 파일의 경로입니다.
  • TAG_NAME는 태그에서 빌드할 트리거를 설정하려는 경우 태그의 이름입니다.
  • BRANCH_NAME은 분기에서 빌드할 트리거를 설정하려는 경우 분기의 이름입니다.

Container Registry 이벤트에 응답하는 빌드 트리거 만들기

이미지가 푸시되거나, 태그 지정되거나, 삭제될 때와 같은 Container Registry 이벤트에 응답하는 Pub/Sub 트리거를 만들 수 있습니다. 이 섹션에서는 이미지가 커스텀 필터로 설정된 태그와 일치할 때 빌드를 호출하는 Pub/Sub 트리거를 만드는 방법을 설명합니다. Container Registry에 익숙하지 않으면 Container Registry 빠른 시작을 참조하여 태그를 사용하여 이미지를 푸시하고 가져오는 방법을 알아보세요.

콘솔

Container Registry에서 이미지 푸시를 리슨하고 Google Cloud Console을 사용하여 태그 이름과 일치하는 트리거를 만들려면 다음 안내를 따르세요.

  1. 트리거 페이지 열기:

    트리거 페이지 열기

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

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

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

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

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

    • 이벤트: 트리거를 호출할 이벤트로 Pub/Sub 메시지를 선택합니다.

    • 구독: 트리거 이벤트로 구독하려는 Pub/Sub 주제를 선택합니다. 드롭다운 메뉴에 프로젝트의 모든 기존 주제가 표시됩니다.

      • Pub/Sub 주제: 드롭다운 메뉴에서 gcr 주제를 선택하거나 Pub/Sub 알림 구성의 안내에 따라 주제를 수동으로 만듭니다.
    • 소스: Pub/Sub 트리거가 실행될 때 빌드할 소스를 선택합니다. 1세대 또는 2세대를 소스로 지정할 수 있습니다.

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

      • 브랜치 또는 태그: 일치시킬 브랜치 또는 태그 값으로 정규 표현식을 지정합니다. 허용되는 정규 표현식 구문에 대한 자세한 내용은 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 콘솔에서 빌드 구성 파일을 작성하려면 편집기 열기를 클릭합니다. 빌드 구성을 저장하려면 완료를 클릭합니다.

    • 대체(선택사항): 빌드 구성 옵션으로 빌드 구성 파일을 선택한 경우, 이 필드를 사용하여 트리거 특정 대체 변수를 정의하도록 선택할 수 있습니다.

      다음 예시에서는 gcr 이벤트와 연관된 페이로드 및 작업에서 이미지 태그 이름을 가져옵니다. 이렇게 하려면 페이로드 바인딩을 사용하여 대체 변수를 만듭니다.

      아래에서 다음 변수 및 값을 지정합니다.

      변수 이름 변수 값
      _IMAGE_TAG $(body.message.data.tag)
      _ACTION $(body.message.data.action)

      body.message는 게시자가 게시하고 구독자가 소비하는 PubSubMessage를 참조합니다. Pub/Sub 알림 페이로드 예시를 더 살펴보려면 알림 예시를 참조하세요.

    • 필터(선택사항): 대체 변수에 필터를 지정하여 수신 페이로드에 대한 응답으로 트리거가 빌드를 실행할지 여부를 결정하는 필터를 트리거 내에 만들 수 있습니다. 빌드를 실행하려면 필터 표현식이 true로 평가되어야 합니다.

      여러 메시지가 포함된 주제에 대해 Pub/Sub 트리거를 설정할 때는 필터링을 사용하는 것이 좋습니다. 필터를 사용하면 수신 Pub/Sub 메시지에 대한 응답으로 실행되는 빌드를 정밀하게 제어할 수 있습니다. 필터 없이 트리거를 설정할 때와 관련된 위험 요소들에 대해 자세히 알아보려면 필터링되지 않은 트리거와 연관된 위험을 참조하세요.

      다음 예시에서는 _IMAGE_TAG 태그 변수의 이름이 prod와 같은 특정 태그 이름과 일치할 경우 트리거가 빌드를 실행하도록 합니다. 정확한 일치를 위해 '=='와 같은 필터 조건 연산자를 지정할 수 있습니다. 또한 gcr 이벤트와 연관된 작업을 확인할 수 도 있습니다. 예를 들어 새로 추가된 데이터를 찾기 위해 _ACTIONINSERT로 지정할 수 있습니다.

      필터로 다음을 지정합니다.

      • _IMAGE_TAG.matches(prod)
      • _ACTION.matches(INSERT)

      Pub/Sub 트리거의 필터링 구문에는 표현식 평가를 위해 Common Expression Language(CEL)가 사용됩니다. CEL에 대한 자세한 내용은 cel-spec 저장소를 참조하세요. Pub/Sub 트리거에 적용할 수 있는 필터링 구문 예시를 더 살펴보려면 빌드 필터링을 참조하세요.

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

gcloud

Cloud Storage 이벤트에 응답하는 빌드 트리거 만들기

새 바이너리가 기존 스토리지 버킷에 푸시될 때와 같이 Cloud Storage 이벤트에 응답하는 Pub/Sub 트리거를 만들 수 있습니다. 이 섹션에서는 업로드된 버킷에 새 바이너리를 배포할 때 빌드에 응답하는 Pub/Sub 트리거를 만드는 방법을 설명합니다. Cloud Storage에 익숙하지 않으면 빠른 시작을 참조하세요.

콘솔

Google Cloud Console을 사용하여 Cloud Storage 이벤트를 리슨하는 트리거를 만들려면 다음 안내를 따르세요.

  1. 트리거 페이지 열기:

    트리거 페이지 열기

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

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

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

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

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

    • 이벤트: 트리거를 호출할 이벤트로 Pub/Sub 메시지를 선택합니다.

    • 구독: 트리거 이벤트로 구독하려는 Pub/Sub 주제를 선택합니다. 드롭다운 메뉴에 프로젝트의 모든 기존 주제가 표시됩니다.

    • 소스: Pub/Sub 트리거가 실행될 때 빌드할 소스를 선택합니다. 1세대 또는 2세대를 소스로 지정할 수 있습니다.

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

      • 브랜치 또는 태그: 일치시킬 브랜치 또는 태그 값으로 정규 표현식을 지정합니다. 허용되는 정규 표현식 구문에 대한 자세한 내용은 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 콘솔에서 빌드 구성 파일을 작성하려면 편집기 열기를 클릭합니다. 빌드 구성을 저장하려면 완료를 클릭합니다.

    • 대체(선택사항): 빌드 구성 옵션으로 빌드 구성 파일을 선택한 경우, 이 필드를 사용하여 트리거 특정 대체 변수를 정의하도록 선택할 수 있습니다.

      이 예시에서는 버킷에 업로드될 때 새 바이너리의 배포를 감시합니다. 이 데이터를 얻기 위해 페이로드 바인딩을 사용하여 대체 변수를 만들 수 있습니다.

      아래에서 다음 변수 및 값을 지정합니다.

      변수 이름 변수 값
      _EVENT_TYPE $(body.message.attributes.eventType)
      _BUCKET_ID $(body.message.attributes.bucketId)
      _OBJECT_ID $(body.message.attributes.objectId)

      body.message는 게시자가 게시하고 구독자가 소비하는 PubSubMessage를 참조합니다. Pub/Sub 알림 페이로드 예시를 더 살펴보려면 알림 예시를 참조하세요.

    • 필터(선택사항): 대체 변수에 필터를 지정하여 수신 페이로드에 대한 응답으로 트리거가 빌드를 실행할지 여부를 결정하는 필터를 트리거 내에 만들 수 있습니다. 빌드를 실행하려면 필터 표현식이 true로 평가되어야 합니다.

      여러 메시지가 포함된 주제에 대해 Pub/Sub 트리거를 설정할 때는 필터링을 사용하는 것이 좋습니다. 필터를 사용하면 수신 Pub/Sub 메시지에 대한 응답으로 실행되는 빌드를 정밀하게 제어할 수 있습니다. 필터 없이 트리거를 설정할 때와 관련된 위험 요소들에 대해 자세히 알아보려면 필터링되지 않은 트리거와 연관된 위험을 참조하세요.

      새 바이너리가 특정 버킷에 배포된 경우 트리거가 빌드를 실행하도록 해야 하므로, '==' 연산자를 사용하여 정확한 일치를 확인할 수 있습니다. 정규 표현식으로 일치를 수행하려면 '일치' 키워드를 사용할 수도 있습니다.

      필터로 다음을 지정합니다.

      • _EVENT_TYPE == OBJECT_FINALIZE
      • _OBJECT_ID 일치 ^<object-id>$
      • _BUCKET_ID 일치 ^<bucket-id>$
  1. 만들기를 클릭하여 빌드 트리거를 만듭니다.
  2. .

gcloud

필터링되지 않은 트리거와 연관된 위험

Pub/Sub 트리거에 필터를 구성하지 않았으면 트리거가 아티팩트 또는 객체를 수정하여 리슨 중인 주제에 새 메시지를 의도치 않게 게시할 경우 트리거가 결국 빌드를 무제한으로 호출하게 될 수 있습니다. 예를 들어 다음과 같은 경우 트리거가 빌드를 무제한으로 호출할 수 있습니다.

  • gcr 주제를 가리킵니다.
  • gcr에서 이미지 또는 태그를 만듭니다.
  • 버킷에서 특정 객체에 대한 gcs 주제를 가리키고 이 객체를 수정합니다.

무한 루프가 발견되면 트리거를 삭제하거나 호출하는 각 빌드에 대한 추가 비용이 부과되지 않도록 개별 주제를 가리키도록 업데이트할 수 있습니다.

다음 단계