Jenkins 在詹金斯,有可能将一份流产的工作标记为成功吗?

Jenkins 在詹金斯,有可能将一份流产的工作标记为成功吗?,jenkins,jenkins-pipeline,terraform,Jenkins,Jenkins Pipeline,Terraform,在我调用terraform apply的作业中,部署后shell被卡住,作业没有结束,因此我必须中止它。是否可以将中止的作业标记为成功,或者有其他方法不强制结束此作业?在作业摘要/工件/更改/触发器/结果页面上,您可以“添加说明”。这是一个总结结果和解释工作结果审核后发生的事情的好地方。描述的第一部分也出现在构建历史中 回答: 在shell脚本(或jenkins作业脚本)中,您可以使用bash timeout命令来保护任何可能卡住的命令超时[]'。e、 g 您可以在脚本中检查此退出值并成功退出,

在我调用terraform apply的作业中,部署后shell被卡住,作业没有结束,因此我必须中止它。是否可以将中止的作业标记为成功,或者有其他方法不强制结束此作业?

在作业摘要/工件/更改/触发器/结果页面上,您可以“添加说明”。这是一个总结结果和解释工作结果审核后发生的事情的好地方。描述的第一部分也出现在构建历史中

回答: 在shell脚本(或jenkins作业脚本)中,您可以使用bash timeout命令来保护任何可能卡住的命令超时[]'。e、 g

您可以在脚本中检查此退出值并成功退出,或者使用--preserve status选项超时以更改退出代码并将作业视为成功。虽然如果某件事情超时,将作业标记为失败可能是最有意义的

在jenkinsExecute shell内部,您可以使用“set-e”和“set+e”包装超时,这样非零退出代码就不会被视为失败。像这样的东西对你有用:

set -e     # no error if non-zero exit status
timeout <timeout> <terraform hanging command>
set +e
set-e#非零退出状态无错误
超时
set+e

在作业摘要/工件/更改/触发器/结果页面上,您可以“添加说明”。这是一个总结结果和解释工作结果审核后发生的事情的好地方。描述的第一部分也出现在构建历史中

回答: 在shell脚本(或jenkins作业脚本)中,您可以使用bash timeout命令来保护任何可能卡住的命令超时[]'。e、 g

您可以在脚本中检查此退出值并成功退出,或者使用--preserve status选项超时以更改退出代码并将作业视为成功。虽然如果某件事情超时,将作业标记为失败可能是最有意义的

在jenkinsExecute shell内部,您可以使用“set-e”和“set+e”包装超时,这样非零退出代码就不会被视为失败。像这样的东西对你有用:

set -e     # no error if non-zero exit status
timeout <timeout> <terraform hanging command>
set +e
set-e#非零退出状态无错误
超时
set+e

附加到第一个答案后,您有一个
集合
选择,只需管道化分号即可。Bash中令人讨厌的变通方法,但有效

timeout <timeout> <terraform hanging command> || :
timeout | |

附加到第一个答案后,您有一个
集合
备选方案,只需管道化分号即可。Bash中令人讨厌的变通方法,但有效

timeout <timeout> <terraform hanging command> || :
timeout | |

感谢您的响应,在配置terraform期间,启动一个仍在侦听的Jar,这就是为什么我想停止作业而不将其标记为失败。如果命令达到超时,作业将被标记为成功?Jenkin的Execute Shell构建步骤的最后一个命令的退出代码决定构建步骤的成功/失败。你说terraform启动了罐子。如果您使用'timeout',那么在'echo'always successful''之后,这将始终是成功的。我将编辑答案。感谢您的响应,在配置terraform期间,启动一个仍在侦听的Jar,这就是为什么我希望停止作业而不将其标记为失败。如果命令达到超时,作业将被标记为成功?Jenkin的Execute Shell构建步骤的最后一个命令的退出代码决定构建步骤的成功/失败。你说terraform启动了罐子。如果您使用'timeout',那么在'echo'always successful''之后,这将始终是成功的。我将编辑答案。你们到底是如何调用terraform的?您是否使用Execute Shell来运行作业?使用terraform apply,在provision.sh中,阻止Shell的命令应该是“java-jar slave.jar-jnlpUrl http://*****************:8080/computer/terraform/slave agent.jnlp”您如何准确地调用terraform?您是否使用Execute Shell来运行作业?使用terraform apply,在provision.sh中,阻止Shell的命令应该是“java-jar slave.jar-jnlpUrl http://**************:8080/computer/terraform/slave agent.jnlp”