如何使用 Jenkinsfile 禁用多分支管道中的分支

How to disable branch in Multibranch pipeline with Jenkinsfile

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

pipelineTriggers([
    snapshotDependencies(),
]),

有没有办法在 Jenkinsfile

中指定 "Disable this project"

是的,您无法从 Jenkins 作业中禁用项目,因为多分支管道无法控制更改作业中的设置

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

1) Disable the Branch

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

"Exclude branch"中输入分支并保存设置

2) Rename Jenkinsfile

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

中的 Jenkinsfile

此配置将定义在 branch/project 中包含 "Jenkinsfile" 时触发构建。因此,重命名它不会触发构建。

希望这对您有所帮助..

更新:据我所知,您无法从 Jenkisfile 禁用该项目,但作为解决方法,您可以按如下方式配置 cronjob:

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

如果 cron 中没有配置,则构建根本不会触发。

你可以这样做:

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

这与 运行 管道完全不一样,但至少,它运行得非常快,实际上并不进行构建,这对于确保它不会失败很有用- 比如说,如果你使用的是 maven / gitflow 模式,那么 master 分支不应构建多次,因为部署会失败...