【发布时间】:2014-11-26 05:35:53
【问题描述】:
首先是一些上下文:
目前我有一个 Jenkins 作业设置来运行一个 perl 脚本,然后在它运行的任何机器上构建源代码。
根据我对 Jenkins 行为的观察,如果我从 UI 中止正在运行的 Jenkins 作业,我的 perl 脚本的所有相关线程(单个或并行)都会在相应的从机上被杀死。
现在我想复制该行为,即中止 Jenkins 作业,如果在我的构建步骤中我的脚本产生了一些错误。不幸的是,我无法轻松修改或更新正在启动的 perl 脚本(我不是所有者),因此我必须找到一个解决方案,如果可能的话,当然需要对 perl 脚本本身进行最少的修改。
我需要中止它的原因是因为我们不想在产生错误的区域/存储库/位置之后构建任何下游依赖项。
我能否自动化这种行为?也许通过扫描 perl 脚本的日志来寻找错误?或者类似的东西?
任何线索将不胜感激。
如果需要更多信息/说明,请告诉我。
谢谢。
编辑:
我找到了一个有趣的解决方案,它实际上中止了这项工作。通过运行以下命令:
curl --request POST -u <username>:<password> "%JENKINS_URL%/job/%JOB_NAME%/lastBuild/stop"
当然,我现在必须想办法在当前正在编译的区域中发现任何错误时启动此命令。
我觉得我已经完成了一半。
【问题讨论】: