承認に基づくゲートビルド

Cloud Build では、ビルドをすぐには実行せずに、承認されるまでビルドを保留としてマークするトリガーを構成できます。権限のあるユーザーが保留中のビルドを承認すると、ビルドが開始します。承認が拒否された場合、ビルドは開始されません。

このページでは、手動でビルドを承認または拒否する方法について説明します。承認が必要なトリガーを構成する方法については、ビルドトリガーの作成をご覧ください。

始める前に

  • Enable the Cloud Build API.

    Enable the API

  • Google Cloud CLI をインストールします。

  • まだの場合は、承認を必要とするように構成されたビルドトリガーを作成します。

権限の付与

ユーザーに Cloud Build 編集者のロールが付与されている場合、そのユーザーは、承認を必要または不要とするようにトリガーを更新できる権限があります。Cloud Build の権限の詳細については、IAM と権限をご覧ください。プロジェクト内のビルドを承認する権限をユーザーに付与するには、ユーザーは Cloud Build 承認者のロールが必要です。

Cloud Build 承認者のロールを追加するには、次を実行します。

  1. Google Cloud Console で [IAM] ページを開きます。

    [IAM] ページを開く

  2. [アクセス権を付与] をクリックします。

    [アクセス権を付与] パネルが表示されます。

  3. [プリンシパルの追加] セクションで、プロジェクト内の保留中のビルドを承認する権限を付与するユーザーを追加します。

    このセクションでは、1 つ以上のプリンシパルを追加する必要があります。自分をプリンシパルとして追加する場合、トリガーが承認によって制限されている際は、保留中のビルドを手動で承認する必要があります。

  4. [ロールを割り当てる] セクションで、[Cloud Build] > [Cloud Build 承認者] を選択します。

これで、指定したユーザーに保留中のビルドを承認または拒否できるアクセス権限が付与されました。

ビルドの承認

コンソール

Google Cloud Console で保留中のビルドを承認するには、次を実行します。

  1. Google Cloud コンソールで Cloud Build ダッシュボード ページを開きます。

    Cloud Build ダッシュボード ページを開く

  2. 承認するビルドがある場合は、承認待ちのビルドの数を示すメッセージがページの上部に表示されます。メッセージの右側にある [ビルドの表示] をクリックして、承認待ちのビルドのリストを表示します。

  3. 承認するビルドのチェックボックスをオンにします。複数のビルドを選択して承認することも、1 つのビルドを承認することもできます。

  4. ページの上部にある [承認] をクリックして、選択したビルドを承認します。

  5. ビルドが開始される前に、[ビルドの承認] ダイアログ ボックスが表示されます。ダイアログ ボックスでは、ビルドの承認とともに、メッセージと URL をオプションとして追加できます。URL を含めるには、[追加のオプションを表示] をクリックして URL を入力します。

  6. ダイアログ ボックスで [承認] をクリックしてビルドを承認します。

承認すると、ビルドがすぐに開始されます。接続されたリポジトリへのアクセスが組織ポリシー(constraints/cloudbuild.allowedIntegrations)によって拒否される場合、ポリシーによって承認がオーバーライドされます。詳細については、組織のポリシーに基づくゲートビルドをご覧ください。

gcloud

gcloud commands を使用して保留中のビルドを承認するには、ターミナル ウィンドウで次のコマンドを実行します。

gcloud builds approve BUILD_ID \
  --project=PROJECT_ID \
  --url=URL \
  --comment=COMMENT

上記のコマンドのプレースホルダ値を次のように置き換えます。

  • BUILD_ID は、承認するビルドの ID です。
  • PROJECT_ID はプロジェクト ID です。
  • (省略可)URL は、承認に関する情報(JIRA チケットへのリンクなど)を含む URL です。
  • (省略可)COMMENT は、ビルドの承認時に表示されるメッセージです。

承認すると、ビルドがすぐに開始されます。許可された統合のビルドを定義する組織のポリシー(constraints/cloudbuild.allowedIntegrations)が設定されている場合は、ポリシーによって承認がオーバーライドされます。詳細については、ビルドトリガーに組織のポリシーを適用するをご覧ください。

ビルドの拒否

コンソール

Google Cloud Console で保留中のビルドを拒否するには、次を実行します。

  1. Google Cloud コンソールで Cloud Build ダッシュボード ページを開きます。

    Cloud Build ダッシュボード ページを開く

  2. 承認するビルドがある場合は、承認待ちのビルドの数を示すメッセージがページの上部に表示されます。メッセージの右側にある [ビルドの表示] をクリックして、承認待ちのビルドのリストを表示します。

  3. 複数のビルドを選択して拒否することも、1 つのビルドを拒否することもできます。拒否するビルドのチェックボックスをオンにします。

  4. ページ上部の [拒否] をクリックしてビルドを拒否します。

ビルドを拒否した場合、ビルドは開始されません。

gcloud

gcloud commands を使用して保留中のビルドを拒否するには、ターミナル ウィンドウで次のコマンドを実行します。

gcloud builds reject BUILD_ID \
  --project=PROJECT_ID \
  --url=URL \
  --comment=COMMENT

上記のコマンドのプレースホルダ値を次のように置き換えます。

  • BUILD_ID は、拒否するビルドの ID です。
  • PROJECT_ID はプロジェクト ID です。
  • (省略可)URL は、承認に関する情報(JIRA チケットへのリンクなど)を含む URL です。
  • (省略可)COMMENT は、ビルドの拒否した時に表示されるメッセージです。

ビルドを拒否すると、ビルドは開始されません。

承認待ちのビルドの通知を受信する

Cloud Build Notifier を使用すると、SlackSMTP サーバーなどの Cloud Build で管理される Notifier を使用するか、独自の Notifier を作成して、保留中のビルドに関する通知を受け取ることができます。

通知を構成するには、次を実行します。

  1. 次のいずれかのページの指示に従って、目的のサービスの通知を構成します。

  2. 上記のページのいずれかを使用して通知を構成する場合は、PENDING ステータスでビルドをフィルタリングするように Notifier を構成する必要があります。これにより、承認待ちのビルドについての通知が送信されます。次の SMTP Notifier 構成ファイルの例では、フィルタ フィールドで Common Expression Language(CEL)を使用して、PENDING ステータスのビルドイベントをフィルタリングしています。

    apiVersion: cloud-build-notifiers/v1
    kind: SMTPNotifier
    metadata:
      name: example-smtp-notifier
    spec:
      notification:
        filter: build.status == Build.Status.PENDING
        delivery:
          server: example.gmail.com
          port: 0000
          sender: sender@example.com
          ...
    

    完全なサンプルについては、SMTP Notifier の構成ファイルをご覧ください。

  3. Notifier をデプロイするには、ターミナルで gcloud run コマンドを実行します。次の例では、Cloud Run を使用して SMTP Notifier をデプロイします。

    gcloud run deploy example.gmail.com \
      --image=us-east1-docker.pkg.dev/gcb-release/cloud-build-notifiers/smtp:latest \
      --update-env-vars=CONFIG_PATH=smtp.yaml, PROJECT_ID=my-project
    

サービスに対する保留中のビルドの通知が送信されます。

次のステップ