このページでは、Secure Source Manager で Webhook を設定する方法について説明します。
Webhook は、Secure Source Manager のイベントによってトリガーされ、ユーザー指定の URL に送信される HTTP リクエストです。
始める前に
必要なロール
Webhook の作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- Secure Source Manager リポジトリに対する Secure Source Manager リポジトリ管理者 (
roles/securesourcemanager.repoAdmin) - Secure Source Manager インスタンス アクセサー (
roles/securesourcemanager.instanceAccessor) Secure Source Manager インスタンスに対する
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
Secure Source Manager ロールの付与については、 IAM によるアクセス制御と ユーザーにインスタンスへのアクセス権を付与するをご覧ください。
Webhook を設定する
- Secure Source Manager ウェブ インターフェースで、Webhook を作成するリポジトリに移動します。
- [設定] をクリックします。
- [Webhooks] をクリックし、[Webhook を追加] をクリックします。
[Hook ID] フィールドに、Webhook の ID を入力します。
[ターゲット URL] フィールドに、Webhook URL を入力します。たとえば、Jenkins でビルドをトリガーする場合は、 Webhook トリガーを設定し、ここに Jenkins トリガー URL を入力して Jenkins でビルドをトリガーします。
Webhook トリガーの作成時に入力した鍵とシークレットの値が Webhook URL に含まれている場合は、ターゲット URL の末尾から削除して、[機密性の高いクエリ文字列] フィールドにコピーします。
Webhook URL で鍵とシークレットを見つけるには、
key=で始まるテキストを探します。たとえば、次の URL があるとします。
https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=Hello%20Secret%20Manager[ターゲット URL] フィールドから、疑問符
?key=...で始まる部分をコピーして削除します。次に、最初の疑問符を削除し、残りの部分key=...を [機密性の高いクエリ文字列] フィールドに移動します。[トリガー] セクションで、次のいずれかを選択します。
- [Push]: リポジトリへの push でトリガーします。
- [**プルリクエストの状態が変更されました**]: プルリクエストの状態が変更されたときにトリガーします。
[Push] を選択した場合は、 [ブランチ フィルタ] フィールドに push イベントの許可リストを入力できます。
[ブランチ フィルタ] フィールドでは glob パターンが使用され、一致するブランチに対するオペレーションのみがビルドトリガーを発生させます。たとえば、
{main,dev}はmainブランチとdevブランチへの push イベントでトリガーされます。フィールドが空の場合、または*の場合、すべてのブランチの push イベントが報告されます。構文については、glob のドキュメントをご覧ください。[Webhook を追加] をクリックします。
Webhook が [Webhook] ページに表示されます。
Webhook をテストする
- Secure Source Manager の [Webhook] ページで、テストする Webhook をクリックします。
ページの一番下までスクロールして [配信をテスト] をクリックします。
プレースホルダ イベントが配信キューに追加されます。配信履歴に表示されるまで数秒かかることがあります。
gitコマンドを使用して、pull リクエストを push またはマージして Webhook をテストすることもできます。Webhook トリガーを構成したサービスのビルド履歴で、トリガーされたビルドまたはイベントのステータスを確認します。
最初のテスト配信を送信した後、Secure Source Manager の Webhook ページの [最近の配信] セクションで、テスト配信の [リクエスト] と [レスポンス] を確認することもできます。
Cloud Build YAML 変数をペイロード データに置き換える
Webhook を使用して Cloud Build に接続している場合は、Cloud Build YAML 変数を Secure Source Manager Webhook ペイロード データに置き換えることができます。
Secure Source Manager の [Webhook] ページの [最近の配信] セクションで、一番上の行をクリックします。
Webhook ペイロードによって送信された [リクエスト] ヘッダーとコンテンツが表示されます。
Cloud Build ダッシュボードに移動し、[トリガー] をクリックします。
構成するトリガーをクリックします。
[詳細セクション] の [代入変数] で、 [+ 変数を追加] をクリックします。
変数の名前と値を入力します。値の接頭辞は
bodyです。たとえば、Cloud Build YAML で
_REPO_URLをペイロード データ フィールドrepository.clone_urlに、_COMMIT_SHAを最新の commit sha に置き換えるには、次の名前と値を入力します。- 変数 1:
_REPO_URL値 1:$(body.repository.clone_url) - 変数 2:
_COMMIT_SHA値 2:$(body.after)
Cloud Build YAML ファイルは次のようになります。
steps: - name: gcr.io/cloud-builders/git env: - '_REPO_URL=$_REPO_URL' - '_COMMIT_SHA=$_COMMIT_SHA' script: | #!/bin/sh git clone ${_REPO_URL} /workspace cd /workspace git reset --hard ${_COMMIT_SHA}- 変数 1: