当前位置: 首页 > 知识库问答 >
问题:

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

南宫才艺
2023-03-14

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

pipelineTriggers([
    snapshotDependencies(),
]),

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

共有2个答案

唐修明
2023-03-14

你可以这样做:

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

这与根本不运行管道并不完全相同,但至少它运行得非常快,实际上并不进行构建,这对于确保它不会失败很有用——比如,如果您使用maven/gitflow模式,其中主分支不应构建多次,因为部署会失败。。。

田普松
2023-03-14

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

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

1)禁用分支

要控制设置,请转到PROJECT(要修改设置的项目)

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

2) 重命名Jenkinsfile

如果您无法控制项目设置,那么简单的方法是在项目/分支中重命名Jenkinsfile。

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

希望这有帮助...

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

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

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

 类似资料:
  • 当前,当点击第一阶段时,声明性管道将自动执行 我只想在子目录中签出scm。(因此它不会在根目录中签出相同的内容) 因为它需要jenkinsfile它已经结账一次。加目录

  • 对于一个新项目,我想使用Jenkins CI的新管道功能。我们的Git存储库中有几个分支,应该以同样的方式进行测试。它还应该自动跟踪和处理新的分支。因此,我创建了一个多分支管道作业。但它的配置有两个问题: 1) 为了被Jenkins标记为有效,分行需要一个“Jenkinsfile”。如果这不存在,詹金斯将忽略该分支。有没有办法标记与模式匹配的所有分支,而不需要在其中包含此文件? 2) 每个分支都应

  • 我目前设置了一个 Jenkins 多分支管道作业,该作业基于 Gitlab 服务器上托管的 Git 存储库。Jenkins 可以读取存储库中的分支,并为存储库中的每个分支创建一个作业。但是我不知道如何在Gitlab中使用webhook触发作业。 我的问题是: > < li> 如何从Gitlab服务器触发在Jenkins中创建新的分支作业?我看不到一个新分支的webhook被推。 如何触发单个分支的

  • 我正在使用管道插件运行Jenkins 2。我已经设置了一个多分支管道项目,其中每个分支(主、开发等)在根目录中都有一个Jenkinsfile。设置这个很简单。但是,我不知道如何让每个分支定期运行(不是分支索引),即使代码没有改变。我需要在Jenkinsfile中放入什么来启用定期构建?

  • 我有一个场景,但我有两个项目(a和B),都在Jenkins中配置了多分支管道作业,问题是项目B依赖于项目a。 所以我发现有时候当我在项目A中签入代码时,我也需要在项目A构建后构建项目B。现在,在我开始调查管道构建之前,我将每个分支都有一个作业,然后在Jenkins中为相应的分支触发项目B的适当作业。 我想在Jenkins文件中设置什么,这样当ProjectA/develop执行时,它就会触发Pro

  • 现在多分支管道作业类型已经成熟,还有什么理由再使用简单的管道作业类型吗?即使您现在只有一个分支,考虑到未来多个分支的可能性可能是明智的,那么假设您将Jenkins管道存储在SCM中,那么为您的Jenkins管道使用管道作业类型与始终使用多分支管道作业类型的动机是什么?现在这两种作业类型之间是否存在功能平价?