10

我在 Jenkins 有一个多分支管道项目。我想在管道项目中列出一个分支时禁用它。我可以添加一个异常来超越 scm 触发。但我想禁用所有触发,包括手动触发。如果我在为分支创建的作业中使用“构建触发器”下的“禁用此项目”,则当我重新加载页面时不会选择该选项(没有可用于单个分支管道的保存/应用按钮)。它只保留在 Jenkinsfile 中配置的以下配置。

pipelineTriggers([
    snapshotDependencies(),
]),

有没有办法在 Jenkinsfile 中指定“禁用此项目”

4

2 回答 2

8

诚然,您不能从 Jenkins Job 禁用项目,因为多分支管道无法控制从 job 更改设置

阻止您的分支建立的两种方法。

1)禁用分支

要控制设置,请转到PROJECT(要修改设置的项目)> 配置 > 项目(启用高级设置)

在此处输入图像描述

在“排除分支”中输入分支并保存设置。

2)重命名 Jenkinsfile

如果您无法控制项目设置,简单的方法是在 project/branch 中重命名 Jenkinsfile

在此处输入图像描述

如果分支/项目中有“Jenkinsfile”,则此配置将定义为触发构建。因此,重命名它不会触发构建。

希望这可以帮助..

更新:AFAIK,您不能从 Jenkisfile 禁用该项目,但作为解决方法,您可以按如下方式配置 cronjob:

properties([pipelineTriggers([cron('')])])

如果配置在 cron 中不可用,则构建根本不会触发。

于 2018-03-14T06:05:55.433 回答
3

你可以这样做:

    stages {
    stage('Build') {
        when { 
            not { 
                branch 'master' 
            }
        }
        steps {
            ...
        }
    }
}

这与根本不运行管道并不完全相同,但至少,它运行得非常快,并且实际上并没有进行构建,这对于让它不会失败很有用 - 比如说,如果你使用的是 maven / gitflow 模式,其中 master 分支不应该被构建超过一次,因为部署会失败......

于 2018-08-20T21:39:26.887 回答