Jenkins - 如何暂停排队作业的运行并让新构建优先

标签 jenkins queue jenkins-plugins jenkins-pipeline pause

Jenkins 任何版本。

我有两个版本:1.642.3 或 2.32.3

我有一份 Jenkins 工作 jobA。假设此作业将工件部署到目标部署服务器。

  • 它有 2 个参数,工件名称和目标部署服务器。
  • 执行并发构建当前已禁用,即未选中标记。

假设我在这个作业上手动启动了多个构建 - 或者通过 Jenkins CLI - 或者通过 Rest API 方式(即通过一些自动化/集成/父上游作业调用这个作业)。

  • 我现在明白了,有一个 Jenkins 构建进行中 - 和 - 所有其他 N 不。的运行处于“排队”模式。

假设我在队列中有将近 100 多个这样的构建(准备在正在进行的构建完成后立即启动),我正在尝试查看是否有办法暂停现有的构建排队构建(PS:我不想取消它们)启动一个新构建(我想紧急部署),一旦完成,取消暂停排队的构建(这样我就不必取消所有构建 再次重新提交/重新构建>记住传递的参数是什么——工件名称和目标部署服务器)。

我的 3 个条件:

1) 我目前的情况之一是运行此作业的服务器是一台 Jenkins 主/从机器(它有一些无法带到其他机器的凭据,即我无法复制源 Jenkins 机器(工作作为奴隶运行的地方,因此,我不能使用一堆奴隶)和

2) 此作业还会在源计算机上的公共(public)位置创建一些运行时文件夹/文件,如果我启用“执行并发构建”,我不想通过运行并发/并行构建来覆盖这些文件夹/文件。我知道,并发构建的工作区对于每个作业运行都是独立的,但如果作业在运行期间创建一个公共(public)文件夹/文件,则不是。

3) 我不想创建此作业的副本:)

一句话,是否可以暂停现有的排队构建(或一些排队构建),以便我可以启动一个新构建或让其他构建优先作为下一个构建,然后取消暂停暂停的构建以恢复(无需重新启动即可启动)?

最佳答案

您可以使用 Priority Sorter Plugin为此。
向作业添加一个新的字符串参数,例如 BUILD_PRIORITY 并将默认值设置为 2。然后在 Job Priorities 菜单中选择 Use Priority from Build Parameter 优先策略并将该参数放在那里。 priority configuration

现在您可以使用默认的 BUILD_PRIORITY 参数值 (2) 运行 100 多个作业,如果您需要紧急启动新构建,只需将该参数设置为 1,它将成为队列中的第一个构建。

关于Jenkins - 如何暂停排队作业的运行并让新构建优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45681087/

相关文章:

jenkins - 在 Jenkins 上用 SpotBugs 替换 FindBugs 时应该使用哪个插件?

docker - Kubernetes 上 Jenkins 的持久卷

maven - liquibase maven 插件多个 changeLogFile

javascript - 从 Laravel 外部推送到 Laravel 队列(NodeJS)

ssl - Jenkins “Publish over FTP plugin” 返回 “534 Policy requires SSL” 用于文件上传

jenkins - jenkins Windons 代理上的 Perforce 同步符号链接(symbolic link)错误

.net - msbuild 和文件版本更改

jenkins - 如何删除Jenkins上下游依赖

c - 如何使用链接实现在c中的队列中插入元素

php - 确保多个请求被依次处理