本頁說明如何在 Secure Source Manager 中設定 Webhook。
Webhook 是由 Secure Source Manager 中的事件觸發的 HTTP 要求,會傳送至使用者指定的網址。
事前準備
必要的角色
如要取得建立 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
- 在 Secure Source Manager 網頁介面中,前往要建立 Webhook 的存放區。
- 按一下「設定」。
- 按一下「Webhook」,然後按一下「新增 Webhook」。
- 在「Hook ID」(Webhook ID) 欄位中,輸入 Webhook 的 ID。 
- 在「目標網址」欄位中,輸入 Webhook 網址。舉例來說,如要在 Jenkins 中觸發建構作業,可以設定 Webhook 觸發條件,然後在此輸入 Jenkins 觸發網址,即可在 Jenkins 中觸發建構作業。 
- 如果 Webhook 網址包含您建立 Webhook 觸發條件時輸入的金鑰和密鑰值,請從目標網址尾端移除這些值,然後複製到「敏感查詢字串」欄位。 - 如要在 Webhook 網址中找出金鑰和密鑰,請尋找以 - key=開頭的文字- 舉例來說,假設有以下網址: - https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=Hello%20Secret%20Manager- 從「目標網址」欄位中,複製並移除以問號開頭的部分 - ?key=...。然後移除開頭的問號,將剩餘部分- key=...移至「敏感查詢字串」欄位。
- 在「觸發條件」部分,選取下列其中一個選項: - 推送:在推送至存放區時觸發。
- 提取要求狀態已變更:在提取要求狀態變更時觸發。
 
- 如果您選取「推送」,則可以在「分支版本篩選器」欄位中,輸入推送事件的允許清單。 - 「Branch filter」(分支篩選器) 欄位會使用 glob 模式,只有在相符分支上執行的作業才會觸發建構。如果欄位空白或為 - *,系統就會回報所有分支的推送事件。如要瞭解語法,請參閱 glob 說明文件。
- 按一下 [Add Webhook]。 
- Webhook 會顯示在「Webhooks」頁面。 
測試 Webhook
- 在 Secure Source Manager 的「Webhooks」(Webhook) 頁面中,按一下要測試的 Webhook。
- 前往頁面底部,然後按一下「測試傳送」。 - 系統會將預留位置活動新增至遞送佇列。可能需要幾秒鐘的時間,才會顯示在運送記錄中。 
- 您也可以使用 - git指令推送或合併提取要求,測試 Webhook。
- 在設定 Webhook 觸發條件的服務中,查看觸發的建構作業或事件在建構作業記錄中的狀態。 
- 傳送第一筆測試交付內容後,您也可以在 Secure Source Manager 網頁的「近期交付內容」部分,查看測試交付內容的「要求」和「回應」。 
以酬載資料取代 Cloud Build YAML 變數
如果您使用 Webhook 連線至 Cloud Build,可以將 Cloud Build YAML 變數替換為 Secure Source Manager Webhook 酬載資料。
- 在 Secure Source Manager 的「Webhooks」頁面中,按一下「Recent deliveries」(近期傳送) 區段中的頂端資料列。 - 系統會顯示 Webhook 酬載傳送的「要求」標頭和內容。 
- 前往 Cloud Build 資訊主頁,然後按一下「觸發條件」。 
- 按一下要設定的觸發條件。 
- 在「進階」部分中,按一下「替代變數」下方的「+ 新增變數」。 
- 輸入變數的名稱和值。值前置字元為 - 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}
- 變數 1: