在启动新作业时终止之前的 运行 个作业(正在等待人工输入)
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'
}
我的问题很简单。
假设我有一个 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'
}