Pub/Sub 通知の構成

Pub/Sub を使用して、Google Cloud リポジトリの変更の通知を受け取ることができます。これらの通知は、ユーザーが新しいリポジトリを作成したとき、リポジトリを削除したとき、または既存のリポジトリに変更を push したときに知らせてくれます。特定のリポジトリまたは Google Cloud プロジェクト全体の通知を構成できます。

Pub/Sub について詳しくは、Pub/Sub とはをご覧ください。

始める前に

  • まだ作成していない場合は、リポジトリを作成します。
  • トピックとサブスクリプションを作成するための適切な権限があることを確認します。詳しくは、アクセス制御をご覧ください。
  • トピックに公開できるサービス アカウントがあることを確認します。デフォルトで、Cloud Source Repositories では、メッセージを公開するために Compute Engine のデフォルトのサービス アカウントを使用します。詳しくは、Cloud Source Repositories の Pub/Sub 通知をご覧ください。

Pub/Sub トピックの作成

通知が必要な Cloud Source Repositories プロジェクトまたはリポジトリごとに、Pub/Sub トピックを作成する必要があります。トピックを作成するには、Google Cloud Console または gcloud コマンドライン ツールを使用します。

トピックを作成するときは、リポジトリの修飾 URI を使用する必要があります。修飾 URI は次のとおりです。

projects/[PROJECT_ID]/topics/[TOPIC_NAME]

ここで

  • [PROJECT_ID] はユーザーの Google Cloud プロジェクト ID です。
  • [TOPIC_NAME] はトピックの名前です。

トピックを作成する方法は次のとおりです。

コンソール

  1. Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。

    [トピック] ページに移動

  2. [トピックを作成] をクリックします。

  3. URI を使用したトピック名を入力します。

    projects/[PROJECT_ID]/topics/[TOPIC_NAME]
    

    ここで

    • [PROJECT_ID] はユーザーの Google Cloud プロジェクト ID です。
    • [TOPIC_NAME] はトピックの名前です。
  4. [作成] をクリックします。

    [トピックの詳細] ページが開きます。

gcloud

ターミナル ウィンドウで次のコマンドを実行します。

gcloud pubsub topics create projects/[PROJECT_ID]/topics/[TOPIC_NAME]

ここで

  • [PROJECT_ID] はユーザーの Google Cloud プロジェクト ID です。
  • [TOPIC_NAME] はトピックの名前です。

gcloud pubsub topics コマンドについて詳しくは、topics ドキュメントをご覧ください。

Pub/Sub サブスクリプションの作成

トピックに公開されたイベントを受信するには、Pub/Sub サブスクリプションを作成する必要があります。

サブスクライバー アプリは、リポジトリのトピックからメッセージを受信します。サブスクライバーは、通知を送信するかビルドをトリガーすることで、リポジトリ イベントに応答できます。

サブスクリプションを作成する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。

    [トピック] ページに移動

  2. プロジェクトのトピックの名前をクリックします。

  3. [サブスクリプションを作成] をクリックします。

    [サブスクリプションをトピックに追加] ページが開きます。

  4. サブスクリプション名を入力します。

    projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
    

    ここで

    • [PROJECT_ID] はユーザーの Google Cloud プロジェクト ID です。
    • [SUBSCRIPTION_NAME] は Pub/Sub サブスクリプションの名前です。
  5. [配信タイプ] は [Pull] に設定されたままにします。

  6. [作成] をクリックします。

gcloud

ターミナル ウィンドウで次のコマンドを実行します。

gcloud pubsub subscriptions create [SUBSCRIPTION_NAME] --topic=[TOPIC_NAME]

ここで

  • [SUBSCRIPTION_NAME] は Pub/Sub サブスクリプションの名前です。
  • [TOPIC_NAME] はトピックの名前です。

gcloud pubsub subscriptions コマンドについて詳しくは、subscriptions ドキュメントをご覧ください。

トピックを追加する

Pub/Sub トピックを Google Cloud プロジェクトまたはリポジトリに関連付けるには、Google Cloud CLI を使用します。

トピックをプロジェクト全体に関連付けるには、次のコマンドを入力します。

gcloud source project-configs update --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

ここで

  • [TOPIC_NAME] は、Pub/Sub トピックの名前です。
  • [SERVICE_ACCOUNT_NAME] は、Cloud Build サービス アカウントの名前です。

トピックを特定のリポジトリに関連付けるには、次のコマンドを入力します。

gcloud source repos update [REPOSITORY_NAME] --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

ここで

  • [REPOSITORY_NAME] は Google Cloud Repository の名前です。
  • [TOPIC_NAME] は、Pub/Sub トピックの名前です。
  • [SERVICE_ACCOUNT_NAME] は、Cloud Build サービス アカウントの名前です。

サービス アカウントはリポジトリと同じプロジェクトに配置する必要があり、指定したトピックでメッセージを公開するために、pubsub.topics.publish 権限が必要です。サービス アカウントに対して iam.serviceAccounts.actAs 権限が必要です。サービス アカウントが指定されていない場合、デフォルトで Compute Engine のデフォルト サービス アカウントが使用されます。

トピックを削除する

プロジェクトまたはリポジトリと Pub/Sub トピック間の関連付けを削除するには、Google Cloud CLI を使用します。

プロジェクト全体からトピックを削除するには、次のコマンドを入力します。

gcloud source project-configs update --remove-topic=[TOPIC_NAME]

特定のリポジトリからトピックを削除するには、次のコマンドを入力します。

gcloud source repos update [REPOSITORY_NAME] --remove-topic=[TOPIC_NAME]

トピックの形式を設定する

Cloud Source Repositories の通知には、JSON 形式とプロトコル バッファ形式のいずれかを使用できます。トピックの形式を設定するには、トピックを追加するときに --message-format パラメータを使用できます。

gcloud source project-configs update --add-topic=[TOPIC_NAME] --message-format=[json|protobuf]

また、set-format コマンドの使用も可能です。

gcloud source project-configs update --update-topic=[TOPIC_NAME] --message-format=[json|protobuf]

次のステップ