Cloud Source Repositories でコードが変更されたときに通知を受ける
このページでは、Cloud Source Repositories の Pub/Sub 通知を設定する方法について説明します。
始める前に
Cloud Source Repositories でコード リポジトリを作成するの手順を完了します。
このクイックスタートを完了すると、App Engine にデプロイ可能なアプリが作成されます。
Compute Engine API を有効にします。
このクイックスタートでは、Compute Engine のデフォルトのサービス アカウントを使用して Pub/Sub にメッセージを公開します。
組織のポリシーの制約
constraints/iam.automaticIamGrantsForDefaultServiceAccounts
が有効になっている場合は、Compute Engine のデフォルトのサービス アカウントにroles/editor
を手動で付与してください。Pub/Sub API を有効にします。
Pub/Sub トピックを作成する
Cloud Source Repositories プロジェクトまたはリポジトリの通知を取得するには、Pub/Sub トピックを作成する必要があります。Google Cloud Console または Google Cloud CLI のいずれかを使用して、トピックを作成できます。
コンソール
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
[トピックを作成] add_box をクリックします。
[名前] フィールドに「
csr-test
」と入力します。[トピックを作成] をクリックします。
[トピックの詳細] ページが開きます。
gcloud
ターミナル ウィンドウで、Google Cloud プロジェクト ID を格納する変数を設定します。リポジトリを含む Google Cloud プロジェクトと同じであることを確認します。
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
次のコマンドを実行します。
gcloud pubsub topics create projects/$PROJECT_ID/topics/csr-test
Pub/Sub サブスクリプションの作成
pull、push、または BigQuery サブスクリプションを作成します。
Pub/Sub サブスクリプションにより、サブスクライバーがリポジトリのトピックからメッセージを受信できるようになります。
コンソール
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
作成した Google Cloud プロジェクトのトピック名をクリックします。
[サブスクリプション] タブで、[サブスクリプションを作成] をクリックします。
[サブスクリプションをトピックに追加] ページが開きます。
サブスクリプション名に「
csr-subscription-test
」と入力します。[配信タイプ] が Pull に設定されていることを確認します。
[作成] をクリックします。
[トピックの詳細] ページが開きます。サブスクリプションが [サブスクリプション] タブに表示されます。
gcloud
ターミナル ウィンドウで次のコマンドを実行します。
gcloud pubsub subscriptions create csr-subscription-test --topic=csr-test
トピックとリポジトリの関連付け
Google Cloud CLI を使用して、Pub/Sub トピックを特定のリポジトリに関連付けます。
gcloud source repos update hello-world --add-topic=csr-test
次のような出力が表示されます。
name: projects/csr-quickstart-test/repos/hello-world
pubsubConfigs:
projects/csr-quickstart-test/topics/csr-test:
messageFormat: JSON
serviceAccountEmail: 604898361241-compute@developer.gserviceaccount.com
topic: projects/csr-quickstart-test/topics/csr-test
url: https://source.developers.google.com/p/csr-quickstart-test/r/hello-world
hello-world
リポジトリに変更を push する
Pub/Sub トピックとサブスクリプションを設定したら、hello-world
リポジトリに変更を push します。この変更により、作動中の通知を表示できるようになります。
ターミナル ウィンドウで
hello-world
リポジトリに移動します。cd hello-world
次のように
main.py
ファイルを編集します。#!/usr/bin/env python import webapp2 class MainHandler(webapp2.RequestHandler): def get(self): self.response.write('Hello, Cloud Pub/Sub!') app = webapp2.WSGIApplication([ ('/', MainHandler) ], debug=True)
Git で commit できるようにファイルを追加します。
git add main.py
ファイルを commit します。
git commit -m "Update main.py to test Cloud Pub/Sub notifications"
ファイルを Cloud Source Repositories に push します。
git push origin master
通知を表示する
リポジトリに変更を push すると、Pub/Sub が通知を送信します。この通知を表示するには、次のコマンドを入力します。
gcloud pubsub subscriptions pull csr-subscription-test
クリーンアップ
Pub/Sub リソースを削除する方法は次のとおりです。
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
完全に削除するトピックのチェックボックスをオンにします。
[削除] delete をクリックします。
残りのサブスクリプションをすべて削除するには、それぞれを表示して、[削除] deleteをクリックします。
作成したリポジトリを削除する方法は次のとおりです。
Google Cloud コンソールで、Cloud Source Repositories の [すべてのリポジトリ] ページを開きます。
削除するリポジトリにカーソルを合わせ、[設定] settingsをクリックします。
[全般設定] ページが開きます。
[このリポジトリを削除] delete をクリックします。
[リポジトリの削除] ダイアログが開きます。
削除するリポジトリの名前を入力します。
[削除] をクリックします。
次のステップ
- Cloud Source Repositories の通知の構成についてさらに学習する。
- Cloud Source Repositories の Pub/Sub 通知の詳細を確認する。
- Pub/Sub のドキュメントを読む。
- Pub/Sub とはで Pub/Sub の詳細を確認する。
- Pub/Sub アクセス制御の役割についてさらに学習する。