从执行的shell中中止Jenkins作业

时间:2014-11-25 01:10:11

标签: shell jenkins abort

首先是一些背景:

目前我有一个Jenkins作业设置来运行perl脚本,然后在它运行的任何机器上构建源代码。

根据我对Jenkins行为的观察,如果我从UI中止一个正在运行的Jenkins作业,我的perl脚本的所有相关线程(单个或并行)都会在相应的从属机器上被杀死。

现在我想要复制那种行为,即在我的构建步骤中中止Jenkins作业,我的脚本会产生一些错误。不幸的是,我无法轻松修改或更新正在启动的perl脚本(我不是所有者)所以我必须找到一个解决方案,如果可能的话,需要对perl脚本本身进行最少的修改。

我需要中止它的原因是因为我们不希望在产生错误的区域/存储/位置之后构建任何下游依赖项。

我可以自动执行此类行为吗?也许通过扫描perl脚本的日志来寻找错误?或类似的东西?

任何线索都会非常感激。

如果需要更多信息/澄清,请告诉我。

感谢。

编辑:

我发现了一个有趣的解决方案,实际上中止了这项工作。通过运行以下命令:

curl --request POST  -u <username>:<password> "%JENKINS_URL%/job/%JOB_NAME%/lastBuild/stop"

当然,只要在当前正在编译的区域中发现任何错误,我现在必须想办法启动此命令。

我觉得我已经走了一半。

1 个答案:

答案 0 :(得分:2)

xshell plugin可以解析日志文件,如果它到达正则表达式(或需要太长时间),可能会使作业失败。这个插件取代了shell步骤。

enter image description here

免责声明:我将此更改放入,我应该更新维基