如何禁用詹金斯管道作业

how to disable jenkins pipeline job

我正在使用 Jenkins 2.0 的管道作业,但我没有看到选项 'disable job',因为我在旧的 Jenkins 版本中已经习惯了。我错过了什么吗?是否仍然可以禁用(管道)作业?

没有禁用 jenkins-pipeline 作业的选项。

以下 jira ticket 正在跟踪该问题:

https://issues.jenkins-ci.org/browse/JENKINS-27299

从 Jenkins 2.89.4 开始,您可以简单地使用 "Disable Project" 选项来禁用管道作业。

对于多分支管道项目,

  • 单击管道 'configuration'
  • 在'Branch Sources'之下,在'Property Strategy'之下
    • 点击'ADD PROPERTY'
    • select "Suppress automatic SCM triggering"

现在,没有 github 分支触发器会 运行 构建作业。 (这将禁用所有分支的触发器)

  • 转到作业配置
  • 下 "Build Triggers" select "Disable this project"
  • 保存

如果您没有找到禁用按钮。这应该可以解决大多数工作。只需将 /disable 附加到作业 URL 的末尾即可。然后 Jenkins 会将您重定向到一个您可以 Post 的页面。同样适用于 /enable

我有一个类似的案例,发现我们的许多作业 are/were 是由自动 "seeder" 作业设置的,该作业是从作业 DSL 创建的,并且它们的配置不可编辑。所以我去了 GitHub 并禁用了连接两者的 webhook。所以作业仍然有效,但不应再由 GitHub activity 触发。

如果像我一样,您的 Jenkins 作业是由 DSL 工作流自动创建的,您将无法编辑包含所有实际分支的 top-level 作业的配置来禁用从 github 钩子自动构建。除了在每个阶段将 when triggered by 子句用作 mentioned in this other SO answer 之外,我目前找不到以编程方式禁用 jenkinsfile 中整个管道的方法。此外,这会导致它 运行 并成功,这可能不是我们想要的。

所以我觉得 least-hacky 的解决方案是:

  1. 将存储库中所有分支上的 Jenkinsfiles 的名称更改为 Jenkinsfile 以外的名称,这样 Jenkins 的 SCM 轮询就不会选择它。我选择了Jenkinsfile.manual。这假设 job-auto-creator 设置为查找“Jenkinsfile”;根据需要进行调整。
  2. auto-created 作业应该在下次扫描回购时自行删除,无论是来自 github 挂钩、计划扫描还是您按下“立即扫描”。
  3. 为您的存储库手动创建一个新的多分支管道作业,设置 构建配置 以查找 Jenkinsfile.manual(或您选择的任何名称)。
  4. 配置您通常使用的任何分支行为,但也添加 属性 策略 所有分支获得相同的属性 > 抑制自动 SCM 触发.

这对我来说感觉“正确”,你的里程因我而异。