極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有:
- 極狐GitLab 中文文檔
- 極狐GitLab 中文論壇
- 極狐GitLab 官網
外部狀態檢查 (ULTIMATE ALL)
-
pending 狀態引入于極狐GitLab 16.5
-
pending 狀態檢查的超時時間為兩分鐘引入于極狐GitLab 16.6。
狀態檢查是向外部系統發出的API調用,目的是請求外部要求的狀態。
您可以創建一個狀態檢查,將合并請求數據發送到第三方工具。當用戶創建、更改或關閉合并請求時,極狐GitLab 會發送通知。用戶或自動化工作流可以在極狐GitLab 之外更新合并請求的狀態。
通過此集成,您可以與第三方工作流工具(如 ServiceNow 或您選擇的自定義工具)進行集成。第三方工具響應一個相關的狀態。該狀態將作為非阻塞小部件顯示在合并請求中,顯示該狀態下合并請求的作者或審閱者,直接在合并請求級別。
您可以為每個單獨的項目配置合并請求狀態檢查。這些設置在項目之間不共享。
如果狀態檢查在兩分鐘內仍處于 pending 狀態,則會失敗。
限制合并請求的合并,除非所有狀態檢查已通過
- 引入于極狐GitLab 15.5 通過一個標志 名為 only_allow_merge_if_all_status_checks_passed。默認禁用。
- 在 JihuLab.com 啟用于 GitLab 15.8。
- 在私有化部署版本中啟用,并且功能標志已移除于極狐GitLab 15.9。
默認情況下,即使外部狀態檢查失敗,項目中的合并請求也可以被合并。要阻止外部檢查失敗時合并合并請求:
1.在左側邊欄中,選擇 搜索或轉到 并找到您的項目。
2.選擇 設置 > 合并請求。
3.選中 狀態檢查必須成功 復選框。
4.選擇 保存更改。
生命周期
外部狀態檢查有一個 異步 工作流。每當合并請求被更新、關閉、重新打開、批準、取消批準或合并時,合并請求都會向外部服務發送一個合并請求的 Webhook 負載。
當合并請求被更新、關閉、重新打開、批準、取消批準或合并時。
當代碼被推送到合并請求的源分支時。
當接收到有效負載時,外部服務可以運行所需的過程,然后使用 REST API 將其響應發布回合并請求。
如果響應未指向當前源分支的 HEAD 提交,合并請求將返回 409 Conflict 錯誤。因此,外部服務可以安全地處理并響應過時的提交。
外部狀態檢查有以下狀態:
-
pending - 默認狀態。合并請求尚未收到外部服務的響應。
-
passed - 已收到外部服務的響應,并且該響應已被批準。
-
failed - 已收到外部服務的響應,并且該響應已被拒絕。
如果在 GitLab 之外發生更改,您可以使用 API 設置外部狀態檢查的狀態。您無需等待先發送合并請求的 Webhook 有效負載。
查看狀態檢查服務
要查看添加到項目中的狀態檢查服務列表,您可以通過合并請求設置進行查看:
1.在左側邊欄中,選擇 搜索或跳轉 并找到您的項目。
2.選擇 設置 > 合并請求。
3.向下滾動到 狀態檢查。此列表顯示了服務名稱、API URL、目標分支以及 HMAC 身份驗證狀態。
您還可以通過 分支規則 設置查看狀態檢查服務列表。
添加或更新狀態檢查服務
添加狀態檢查服務
在 狀態檢查 子部分中,選擇 添加狀態檢查 按鈕。然后會顯示 添加狀態檢查 表單。
填寫表單并選擇 添加狀態檢查 按鈕后,將創建一個新的狀態檢查。
更新狀態檢查服務
在 狀態檢查 子部分中,選擇您想編輯的狀態檢查旁邊的 編輯 ({鉛筆})。然后會顯示 更新狀態檢查 表單。
NOTE:您無法查看或修改 HMAC 共享密鑰的值。要更改共享密鑰,您需要刪除并使用新值重新創建外部狀態檢查。
更改表單中的值并選擇 更新狀態檢查 按鈕即可更新狀態檢查。
表單值
有關常見表單錯誤,請參見下面的 故障排除 部分。
服務名稱
此名稱可以是任何字母數字值,必須 設置。名稱 必須 對項目唯一。
該名稱 必須 對項目唯一。
檢查 API
此字段需要一個 URL,必須 使用 HTTP 或 HTTPS 協議。
我們 推薦 使用 HTTPS 來保護合并請求數據的傳輸。
URL 必須 設置并且 必須 對項目唯一。
目標分支
如果您想將狀態檢查限制為單個分支,可以使用此字段來設置此限制。
分支列表來自項目的 保護分支。
您可以滾動瀏覽分支列表,或者在有很多分支且您要找的分支未立即出現時使用搜索框。搜索框需要輸入 三個 字符來開始搜索。
如果您希望狀態檢查適用于 所有 合并請求,您可以選擇 所有分支 選項。
HMAC 共享密鑰
HMAC 身份驗證可以防止請求篡改,并確保它們來自合法來源。
刪除狀態檢查服務
在 狀態檢查 子部分中,選擇您想刪除的狀態檢查旁邊的 移除 ({移除})。然后會顯示 刪除狀態檢查? 模態框。
要完成狀態檢查的刪除,您必須選擇 移除狀態檢查 按鈕。此操作 永久 刪除狀態檢查,且 不可恢復。
狀態檢查小部件
- 極狐GitLab 15.2 更新了 UI 更新。
- 極狐GitLab 15.8 添加了重試失敗的外部狀態檢查功能。
- 極狐GitLab 15.11 更新了小部件更新,以在狀態檢查待定時輪詢更新。
狀態檢查小部件顯示在合并請求中,顯示以下狀態:
-
待定 ({狀態中立}),表示 GitLab 等待來自外部狀態檢查的響應。
-
成功 ({狀態成功}) 或 失敗 ({狀態失敗}),表示 GitLab 收到來自外部狀態檢查的響應。
當存在待定的狀態檢查時,小部件會每隔幾秒輪詢更新,直到收到 成功 或 失敗 響應。
要重試失敗的狀態檢查:
1.在左側邊欄中,選擇 搜索或跳轉 并找到您的項目。
2.選擇 代碼 > 合并請求 并找到您的合并請求。
3.向下滾動到合并請求報告部分,展開下拉列表顯示外部狀態檢查列表。
4.在失敗的外部狀態檢查行上選擇 重試 ({重試})。該狀態檢查將恢復為待定狀態。
一個組織可能有不允許在外部狀態檢查不通過時合并合并請求的政策。然而,小部件中的詳細信息僅供參考。
NOTE:極狐GitLab 無法保證外部狀態檢查由相關的外部服務正確處理。
故障排除
重復值錯誤
名稱已被占用
---
外部 API 已被另一個狀態檢查使用
對于每個項目,狀態檢查只能使用一次名稱或 API URL。
這些錯誤意味著該項目的狀態檢查中,名稱或 API URL 已經被使用。
您必須選擇不同的值用于當前的狀態檢查,或者更新現有狀態檢查中的值。
無效的 URL 錯誤
請提供有效的url
API to check 字段要求提供的 URL 必須使用 HTTP 或 HTTPS 協議。
您必須更新該字段的值以滿足此要求。
獲取或搜索分支時的錯誤
無法獲取分支列表,請關閉表單并再次嘗試。
從外部狀態檢查 API 收到意外的響應。
您可以嘗試以下操作:
- 刷新頁面,以防此錯誤是暫時性的。
- 如果問題持續存在,請檢查 GitLab 狀態頁面,查看是否存在更廣泛的故障。