在我打電話給terraform的工作中,在部署後,shell被卡住,作業沒有結束,因此我必須中止它。是否有可能將失敗的工作標記爲成功,或者有另一種方法可以在沒有武力的情況下結束這項工作?Jenkins可以將失敗的工作標記爲成功嗎?
回答
在工作摘要/工件/更改/觸發器/結果頁面上,您可以「添加說明」。這是總結結果的好地方,並解釋審查工作結果後發生的情況。描述的第一部分也出現在Build History中。
答: 在shell腳本(或詹金斯作業腳本),你可以使用慶典timeout命令保護可能會被卡住的任何命令。 'timeout [< option>] < duration> < command>'。例如
$ timeout 2s sleep 4
$ echo $?
124
可以在腳本和退出檢查這個退出值成功或使用--preserve狀態選項超時要修改退出代碼,並且認爲是成功的工作。雖然如果某些事情超時,將工作標記爲失敗可能是最有意義的。
jenkins內部執行shell你可以用'set -e'和'set + e'來包裝超時,以便非零退出代碼不會被視爲失敗。像這樣的東西會爲你工作:
set -e # no error if non-zero exit status
timeout <timeout> <terraform hanging command>
set +e
https://www.gnu.org/software/coreutils/manual/html_node/timeout-invocation.html
感謝您的迴應,在配置terraform啓動期間,仍然在聆聽的JAR這就是爲什麼我想停止作業而不將其標記爲失敗。如果命令達到超時,作業將被標記爲成功? –
Jenkin的Execute Shell構建步驟的最後命令的退出代碼決定了構建步驟的成功/失敗。你說terraform發射罐子。如果你使用'timeout
其實看到這裏:http://serverfault.com/questions/143445/what-does-set-e-do-and-why-might-it-be-considered-dangerous/143576#143576所以你需要的是使用'set -e''set + e'。我將編輯答案。 – gaoithe
追加到第一個答案,你有一個set
替代只是管道分號。在Bash中討厭的解決方法,但工程。
timeout <timeout> <terraform hanging command> || :
- 1. 成功Jenkins構建標記爲失敗
- 2. 如果子查詢失敗,可以讓MySQL成功嗎?如果子查詢成功,我可以失敗嗎?
- 3. Jenkins在Scala失敗時報告成功
- 4. 爲什麼Gradle將構建失敗的測試標記爲成功?
- 5. Laravel工作標記爲失敗,例外說太多的嘗試,但工作成功?
- 6. Testng在測試失敗時標記爲成功
- 7. 詹金斯標記爲成功即使外殼腳本失敗
- 8. BigQueryIO.write操作成功/失敗
- 9. 在jenkins中失敗/成功轉換curl請求作業
- 10. Jenkins在psexec上工作失敗-d
- 11. Jenkins構建工作區失敗
- 12. Jenkins DSL作業失敗
- 13. 即使構建失敗,是否可以將Jenkins工件上傳到Artifactory?
- 14. regcomp()失敗,'成功'
- 15. Jenkins uDeploy失敗
- 16. 根據成功值將成功轉化爲失敗的最佳方式
- 17. 爲什麼httpJSON失敗,但httpLBS成功?
- 18. Jenkins測試報告中缺少失敗標記
- 19. jdbc連接失敗,但MysqlWorkBench可以連接成功
- 20. Winsock連接可以隨機失敗嗎?
- 21. 我可以從_pre_put_hook導致失敗嗎?
- 22. SICCI爲Jenkins的Xcode插件失敗
- 23. OpenProcess()成功,但EnumProcessModules()失敗
- 24. canOpenUrl失敗,但openUrl成功
- 25. 「java」成功,「java emmarun」失敗
- 26. cipher.doFinal(...)失敗,而cipher.update(...)成功
- 27. Ajax調用成功失敗
- 28. Ajax響應 - 成功/失敗
- 29. IcmpSendEcho失敗,但「ping」成功
- 30. #定義成功或失敗
你是如何正確調用terraform的?您是否在使用** Execute Shell **來執行作業? – gaoithe
使用terraform應用,在provision.sh中,阻止shell的命令應該是「java -jar slave.jar -jnlpUrl http:// ************:8080/computer/terraform/slave -agent.jnlp「 –