設定 Webhook

本頁說明如何在 Secure Source Manager 中設定 Webhook。

Webhook 是由 Secure Source Manager 中的事件觸發的 HTTP 要求,會傳送至使用者指定的網址。

事前準備

  1. 建立 Secure Source Manager 執行個體
  2. 建立 Secure Source Manager 存放區

必要的角色

如要取得建立 Webhook 的必要權限,請要求管理員授予下列 IAM 角色:

  • Secure Source Manager 存放區管理員 (roles/securesourcemanager.repoAdmin) Secure Source Manager 存放區
  • Secure Source Manager 執行個體存取者 (roles/securesourcemanager.instanceAccessor) 在 Secure Source Manager 執行個體上

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

如要瞭解如何授予 Secure Source Manager 角色,請參閱「使用 IAM 控管存取權」和「授予使用者執行個體存取權」。

設定 Webhook

  1. 在 Secure Source Manager 網頁介面中,前往要建立 Webhook 的存放區。
  2. 按一下「設定」
  3. 按一下「Webhook」,然後按一下「新增 Webhook」
  4. 在「Hook ID」(Webhook ID) 欄位中,輸入 Webhook 的 ID。

  5. 在「目標網址」欄位中,輸入 Webhook 網址。舉例來說,如要在 Jenkins 中觸發建構作業,可以設定 Webhook 觸發條件,然後在此輸入 Jenkins 觸發網址,即可在 Jenkins 中觸發建構作業。

  6. 如果 Webhook 網址包含您建立 Webhook 觸發條件時輸入的金鑰和密鑰值,請從目標網址尾端移除這些值,然後複製到「敏感查詢字串」欄位。

    如要在 Webhook 網址中找出金鑰和密鑰,請尋找以 key= 開頭的文字

    舉例來說,假設有以下網址: https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=Hello%20Secret%20Manager

    從「目標網址」欄位中,複製並移除以問號開頭的部分 ?key=...。然後移除開頭的問號,將剩餘部分 key=... 移至「敏感查詢字串」欄位。

  7. 在「觸發條件」部分,選取下列其中一個選項:

    • 推送:在推送至存放區時觸發。
    • 提取要求狀態已變更:在提取要求狀態變更時觸發。
  8. 如果您選取「推送」,則可以在「分支版本篩選器」欄位中,輸入推送事件的允許清單。

    「Branch filter」(分支篩選器) 欄位會使用 glob 模式,只有在相符分支上執行的作業才會觸發建構。如果欄位空白或為 *,系統就會回報所有分支的推送事件。如要瞭解語法,請參閱 glob 說明文件。

  9. 按一下 [Add Webhook]

  10. Webhook 會顯示在「Webhooks」頁面。

測試 Webhook

  1. 在 Secure Source Manager 的「Webhooks」(Webhook) 頁面中,按一下要測試的 Webhook。
  2. 前往頁面底部,然後按一下「測試傳送」

    系統會將預留位置活動新增至遞送佇列。可能需要幾秒鐘的時間,才會顯示在運送記錄中。

  3. 您也可以使用 git 指令推送或合併提取要求,測試 Webhook。

  4. 在設定 Webhook 觸發條件的服務中,查看觸發的建構作業或事件在建構作業記錄中的狀態。

  5. 傳送第一筆測試交付內容後,您也可以在 Secure Source Manager 網頁的「近期交付內容」部分,查看測試交付內容的「要求」和「回應」

以酬載資料取代 Cloud Build YAML 變數

如果您使用 Webhook 連線至 Cloud Build,可以將 Cloud Build YAML 變數替換為 Secure Source Manager Webhook 酬載資料。

  1. 在 Secure Source Manager 的「Webhooks」頁面中,按一下「Recent deliveries」(近期傳送) 區段中的頂端資料列。

    系統會顯示 Webhook 酬載傳送的「要求」標頭和內容。

  2. 前往 Cloud Build 資訊主頁,然後按一下「觸發條件」

  3. 按一下要設定的觸發條件。

  4. 在「進階」部分中,按一下「替代變數」下方的「+ 新增變數」

  5. 輸入變數的名稱和值。值前置字元為 body

    舉例來說,如要在 Cloud Build YAML 中將 _REPO_URL 替換為酬載資料欄位 repository.clone_url,並將 _COMMIT_SHA 替換為最新提交的 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}
    

後續步驟