Google Cloud Source Repositories の Cloud Pub/Sub 通知

このページでは、Google Cloud Source Repositories の Cloud Pub/Sub 通知の概要について説明します。Cloud Pub/Sub 通知のセットアップおよび使用方法については、Cloud Pub/Sub 通知の構成をご覧ください。

Cloud Source Repositories は、リポジトリに関するメッセージを、トピックと呼ばれる名前付きリソースに公開します。これらのメッセージは、Cloud Pub/Sub トピックに登録されたアプリケーションによって受信されます。サブスクライバー アプリケーションは、リポジトリの状態が変更されると通知を受信します。さらに、Cloud Pub/Sub トピックの役割と権限を構成して、リポジトリが生成する Cloud Pub/Sub イベントをユーザーが操作する方法を制御することもできます。

スコープ

Cloud Source Repositories がイベントを Cloud Pub/Sub トピックに公開するよう構成できます。これを、GCP プロジェクト全体、あるいは個々のリポジトリに対して構成できます。

権限

Cloud Pub/Sub アクセス制御を使用して、プロジェクトとリソースの権限を構成できます。アクセス制御を使用して、リポジトリが生成するイベントデータの保護に役立てることができます。

Cloud Pub/Sub アクセス制御は、GCP Console の IAM ページで、あるいは IAM API を使用して構成できます。

Cloud Source Repositories はデフォルトの Compute Engine サービス アカウントを使用して、Cloud Pub/Sub トピックに通知を公開します。このサービス アカウントには、Cloud Pub/Sub トピックにメッセージを公開するために必要な権限があります。gcloud コマンドライン ツールを使用して別のサービス アカウントを選択できます。

登録の権限を構成するには、以下のいずれかの役割を使用します。

  • roles/owner
  • roles/editor
  • roles/pubsub.admin
  • roles/pubsub.editor
  • roles/pubsub.subscriber

イベントタイプ

Cloud Pub/Sub 通知を使用して、ユーザーがリポジトリを作成したとき、リポジトリを削除したとき、リポジトリに commit を push したときを追跡できます。各イベントには固有のイベントタイプがあります。次の表に、更新タイプと、それぞれに対応する定義を示します。

イベントタイプ 説明
CreateRepo ユーザーがリポジトリを作成したときに発生します。
RefUpdate ユーザーが git push コマンドを実行したときに発生します。
DeleteRepo ユーザーがリポジトリを削除したときに発生します。

通知形式

Cloud Source Repositories の Cloud Pub/Sub 通知が次の 2 つの形式のいずれかを使用するよう構成できます。

  • JSON
  • プロトコル バッファ

通知データ

各 Cloud Pub/Sub 通知には、イベントに関する以下の情報が含まれます。

フィールド名 説明
name リポジトリの名前。
url リポジトリの URL。
eventTime 変更が発生した時間。
refUpdateEvent 特定の変更に関する情報。
createRepoEvent ユーザーがリポジトリを作成したかどうかを示します
deleteRepoEvent ユーザーがリポジトリを削除したかどうかを示します

通知が git push コマンドに関するものである場合、この通知の中にある refUpdateEvent フィールドには、以下の情報が含まれます。

フィールド名 説明
email 変更を行なったユーザーのメールアドレス。
refUpdates commit に関する情報。

refUpdate フィールドには、git push コマンドに関する以下の詳細が含まれます。

フィールド名 説明
refName ブランチの名前。
updateType 更新のタイプ。詳細は更新タイプをご覧ください。
oldId リポジトリの以前の commit ID。
newId リポジトリの新しい ID。

更新タイプ

git push イベントは、更新タイプが次の 4 つのうちのいずれかとなります。タイプは通知の updateType フィールドでわかります。

更新タイプ 説明
CREATE コマンドが新しいリファレンスを作成したときに発生します。
UPDATE_FAST_FORWARD コマンドがオブジェクトを更新したときに発生します。
UPDATE_NON_FAST_FORWARD コマンドが -f フラグ(git push -f など)を使用したときに発生します。
DELETE コマンドがリファレンスを削除したときに発生します。

通知の例

以下は、Cloud Pub/Sub 通知に含まれるデータの例です。この通知では、JSON 形式を使用しています。

"name": "projects/test-project/repos/pubsub-test",
"url": "[URL_PATH]",
"eventTime": "2018-02-21T21:23:25.566175Z",
"refUpdateEvent": {
  "email": "someone@somecompany.com",
  "refUpdates": {
    "refs/heads/master": {
    "refName": "refs/heads/master",
    "updateType": "UPDATE_FAST_FORWARD",
    "oldId": "c7a28dd5de3403cc384a025834c9fce2886fe763",
    "newId": "f00768887da8de62061210295914a0a8a2a38226"
    }
  }
}
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Source Repositories