ビルド通知へのサブスクリプション

Cloud Build では、ビルドの作成時、ビルドの動作状態への移行時、ビルドの完了時など、ビルドの状態が変化したときに Google Pub/Sub トピックにメッセージを公開します。

Cloud Build がビルド更新メッセージを公開する Pub/Sub トピックは cloud-builds です。各メッセージでは、base64 でエンコードされたビルドリソースの JSON 文字列表現が message.data 属性に含まれています。ビルドの一意の ID とビルドのステータスmessage.attributes フィールドで確認できます。

Pub/Sub サブスクリプションに push または pull モデルを使用できます。

ビルド通知の受信

ビルド通知を受信するには、次のようにします。

  1. Cloud Build API を有効にします。

    Cloud Build API を有効にする

    Cloud Build API を有効にすると、Cloud Build サービス エージェント サービス アカウントがプロジェクトに自動的に追加されます。サービス アカウントを使用すると、Pub/Sub 経由でビルド通知を受信できます。

    サービス アカウントの形式は次のとおりです。ここで project-number はプロジェクト番号です。

     service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
    

    IAM ページに Cloud Build サービス エージェント サービス アカウントが表示されない、または Pub/Sub 経由で通知を受信できない場合は、次の手順に従ってプロジェクトに Cloud Build サービス エージェントサービス アカウントを追加します。

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

      [IAM] ページを開く

    2. [Add] をクリックします。

    3. 次のプリンシパルを追加します。ここで、project-number はプロジェクト番号です。

      service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
      
    4. ロールとして [サービス エージェント] > [Cloud Build サービス エージェント] の順に選択します。

    5. [保存] をクリックします。

  2. Pub/Sub API を有効にします。

    Pub/Sub API を有効にする

  3. cloud-builds トピックを作成します:

    gcloud pubsub topics create cloud-builds
    

    Pub/Sub トピックの管理の詳細については、トピックとサブスクリプションの管理をご覧ください。

push

push サブスクリプションは、定義した HTTP エンドポイントにメッセージを配信します。メッセージは、トピックに公開されるとすぐに配信されます。

push サブスクリプションから送信されるメッセージは、次のようになります。

{
  "message": {
    "attributes": {
      "buildId": "abcd-efgh...",
      "status": "SUCCESS"
    },
    "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
    "message_id": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

pull

pull サブスクリプションは、サブスクライブされたアプリケーションによってポーリングされたときにメッセージを配信します。サブスクリプションがポーリングされると、メッセージが配信されます。

pull サブスクリプションから送信されるメッセージは次のようになります。

{
  "receivedMessages": [
    {
      "ackId": "dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK...",
      "message": {
        "attributes": {
          "buildId": "abcd-efgh-...",
          "status": "SUCCESS"
        },
        "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
        "messageId": "19917247034"
      }
    }
  ]
}

ビルドの更新通知の登録方法

ビルドの更新通知に登録するには、さまざまな方法があります。 たとえば、メッセージをエンドポイントに push できます。また、サブスクリプションをポーリングする Python アプリを作成することもできます。

ビルドの更新用に Pub/Sub サブスクリプションを設定する方法については、Pub/Sub サブスクライバー ガイドをご覧ください。また、Pub/Sub クライアント ライブラリを使用すると、サブスクライバー アプリケーションをより簡単に開発できます。

Pub/Sub を使用して Slack またはメールにビルドの更新を通知する方法については、Slack 通知を構成するまたは SMTP 通知を構成するをご覧ください。