我在 shell 腳本中定義了一個 Curl 發布請求,作為 Bamboo 計劃中默認作業中任務的一部分。
Curl 請求在我的 QA 環境之一上執行部署。作為全堆疊部署,完成部署大約需要 2 個小時。
部署完成后,為了檢查部署狀態,我希望再發送一個 curl 請求,該請求的回應具有一個狀態欄位,表明部署是否成功。
以下是請求的示例回應:
{
"_id" : "xxx",
"templateId" : "xxx",
"templateName" : "all full reinstall",
"epoch" : "2021-11-12T10:22:14.268Z",
"userEmail" : "[email protected]",
"playbook" : "all_full_reinstall.yml",
"repoId" : "xxx",
"repoName" : "tower-in-house",
"inventoryId" : "xxx",
"inventoryName" : "xxx",
"status" : "failed"
}
我還有其他階段會觸發一些回歸測驗,但只有在狀態為成功且未失敗時才會觸發這些階段。
挑戰是 curl 請求給出了 200 的回應。但在回應中,我希望閱讀“狀態”欄位來決定階段是否成功。
我查看了Can Bamboo 將 HTTP 400 錯誤請求解釋為失敗,但這涉及回傳非 2xx 代碼。就我而言,它回傳 200,但其中一個 json 回應欄位包含錯誤訊息,我需要查看該訊息以確定它是失敗還是成功。
有什么辦法可以繼續嗎?任何幫助將不勝感激。
uj5u.com熱心網友回復:
我認為您可以制作 shell 腳本,該腳本將使用 jq 等庫分析回應 JSON,然后根據狀態欄位值呼叫 exit 0 或 exit 1。如果退出 1 Bamboo 會將任務和作業標記為失敗
uj5u.com熱心網友回復:
我按照上面的 Oleksiy Chystoprudov 回答,我能夠解決這個問題。
這是我用的
response=$(curl -s "API_Endpoint_to_check_deployment_status" | jq '.status' | tr -d '"' )
if [ "$response" = "success" ]; then
exit 0
else
exit 1
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359238.html
