在我打电话给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“ –