Cloud Source Repositories でコードが変更されたときに通知を受ける

このページでは、Cloud Source Repositories の Pub/Sub 通知を設定する方法について説明します。

始める前に

  1. Cloud Source Repositories でコード リポジトリを作成するの手順を完了します。

    このクイックスタートを完了すると、App Engine にデプロイ可能なアプリが作成されます。

  2. Compute Engine API を有効にします。

    このクイックスタートでは、Compute Engine のデフォルトのサービス アカウントを使用して Pub/Sub にメッセージを公開します。

    組織のポリシーの制約 constraints/iam.automaticIamGrantsForDefaultServiceAccounts が有効になっている場合は、Compute Engine のデフォルトのサービス アカウントに roles/editor を手動で付与してください。

    Compute Engine API を有効にする

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

    Pub/Sub API を有効にします

Pub/Sub トピックを作成する

Cloud Source Repositories プロジェクトまたはリポジトリの通知を取得するには、Pub/Sub トピックを作成する必要があります。Google Cloud Console または Google Cloud CLI のいずれかを使用して、トピックを作成できます。

Console

  1. GCP Console で、Pub/Sub の [トピック] ページに移動します。

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

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

  3. [名前] フィールドに「csr-test」と入力します。

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

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

gcloud

  1. ターミナル ウィンドウで、Google Cloud プロジェクト ID を格納する変数を設定します。リポジトリを含む Google Cloud プロジェクトと同じであることを確認します。

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
    
  2. 次のコマンドを実行します。

    gcloud pubsub topics create projects/$PROJECT_ID/topics/csr-test
    

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

pullpush、または BigQuery サブスクリプションを作成します。

Pub/Sub サブスクリプションにより、サブスクライバーがリポジトリのトピックからメッセージを受信できるようになります。

コンソール

  1. GCP Console で、Pub/Sub の [トピック] ページに移動します。

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

  2. 作成した Google Cloud プロジェクトのトピック名をクリックします。

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

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

  4. サブスクリプション名に「csr-subscription-test」と入力します。

  5. [配信タイプ] が Pull に設定されていることを確認します。

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

    [トピックの詳細] ページが開きます。サブスクリプションが [サブスクリプション] タブに表示されます。

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 します。この変更により、作動中の通知を表示できるようになります。

  1. ターミナル ウィンドウで hello-world リポジトリに移動します。

    cd hello-world
    
  2. 次のように 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)
    
  3. Git で commit できるようにファイルを追加します。

    git add main.py
    
  4. ファイルを commit します。

    git commit -m "Update main.py to test Cloud Pub/Sub notifications"
    
  5. ファイルを Cloud Source Repositories に push します。

    git push origin master
    

通知を表示する

リポジトリに変更を push すると、Pub/Sub が通知を送信します。この通知を表示するには、次のコマンドを入力します。

gcloud pubsub subscriptions pull csr-subscription-test

クリーンアップ

Pub/Sub リソースを削除する方法は次のとおりです。

  1. GCP Console で、Pub/Sub の [トピック] ページに移動します。

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

  2. 完全に削除するトピックのチェックボックスをオンにします。

  3. [削除] をクリックします。

  4. 残りのサブスクリプションをすべて削除するには、それぞれを表示して、[削除] をクリックします。

作成したリポジトリを削除する方法は次のとおりです。

  1. GCP Console で、Cloud Source Repositories の [すべてのリポジトリ] ページを開きます。

    Cloud Source Repositories を開く

  2. 削除するリポジトリにカーソルを合わせ、[設定] をクリックします。

    [全般設定] ページが開きます。

  3. [このリポジトリを削除] をクリックします。

    [リポジトリの削除] ダイアログが開きます。

  4. 削除するリポジトリの名前を入力します。

  5. [削除] をクリックします。

次のステップ