在启动新作业时终止之前的 运行 个作业(正在等待人工输入)

Kill previously run jobs (that are waiting for human input) upon initiation of new one

我的问题很简单。

假设我有一个 jenkins 工作流作业,它正在检查一些代码、构建 SNAPSHOT,一直到执行自动化测试和部署它以进行 QA。

在此之后,我有一个 "manual input" 作为工作流程的暂停,以询问是否继续发布代码。我们称之为 run1.

现在说 QA 发现了一个错误,需要获取新的 SNAPSHOT 进行测试。这将调用一个新的构建 (run2) 和一个新的手动问题。

如果 QA 转到 run1 并继续发布,那么这将意味着我发布了错误的代码。

我想在开始新工作时终止所有以前 运行 的工作。这可以通过 groovy script/workflow 命令实现吗?还有其他办法吗?

对于遇到同样问题的任何人,我必须使用一种解决方法来解决它。

我使用 RESTful API 来强制 'Abort' 任何以前的工作 运行 循环遍历每个工作(我只保留 10 个工作,然后才丢弃它们,所以这很公平快)

http://udaypal.com/workflow-integration-using-rest-api/

它很笨拙,但它确实有效。

更简单的选择是使用超时:

stage 'approve'
timeout(time: 7, unit: 'DAYS') {
input message: 'Do you want to deploy?', submitter: 'ops'
}