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

如何禁用分支索引中的触发器,但仍允许在多分支作业中触发SCM

燕和裕
2023-03-14

使用Jenkins多分支管道作业时,如果您在作业中选择< code > Suppress Automatic SCM trigger(抑制自动SCM触发器),它将在索引分支后停止构建作业(强大的功能)。

但是,由于某种原因,这也将扼杀从SCM事件触发构建的能力!

有没有什么方法可以阻止在分支发现(分支索引)后触发构建,但仍然通过SCM事件正常构建?

共有3个答案

艾望
2023-03-14

这不是https://issues.jenkins-ci.org/browse/JENKINS-41980的功能

抑制SCM触发器应抑制由SCM中检测到的更改触发的所有生成,而不管该更改是如何检测到的

杨无尘
2023-03-14

我知道这篇文章很老,但可能有人还有这个问题,首先你需要安装插件basic-corst-build-策略:

如果您正在使用jenkins dsl:

buildStrategies {
  buildAllBranches {
    strategies {
      skipInitialBuildOnFirstBranchIndexing()
    }
  }
}
昝光临
2023-03-14

您始终可以向管道添加逻辑,以中止分支索引原因。例如:

  boolean isBranchIndexingCause() {
    def isBranchIndexing = false
    if (!currentBuild.rawBuild) {
      return true
    }

    currentBuild.rawBuild.getCauses().each { cause ->
      if (cause instanceof jenkins.branch.BranchIndexingCause) {
        isBranchIndexing = true
      }
    }
    return isBranchIndexing
  }

调整逻辑以适应您的用例。

编辑:管道语法

当前构建变量的类型为RunWrapper,可用于引用当前运行的构建。它具有以下可读属性:

...

原始建筑:

一个 hudson.model.使用其他 API 运行,仅适用于沙盒外部的受信任库或管理员批准的脚本;该值将不可序列化,因此您只能在标记为@NonCPS

...

另见:jenkins.branch.BranchIndexingCause

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

  • 问题内容: 我希望我的Jenkins多分支管道工作避免触发自身。作业之所以提交,是因为它将递增版本文件并将其检入源代码管理,这将导致无限循环。 在常规工作中,我可以按照以下说明操作来避免这种循环(尽管这不是最干净的方法)。 这些说明不适用于多分支管道(没有“忽略某些用户的提交”选项)。Jenkins多分支管道中是否有任何方法可以防止自我触发的提交? 问题答案: 如果使用GIT,一种解决方法: 更改

  • 我可以让我的主分支作业按如下方式每小时运行一次: 但是我希望每小时的运行有一些特定的行为——比如每小时的cron触发运行只运行某些阶段。 有没有办法从管道内部识别多分支作业是否是由cron调度触发的?

  • 我有一个管道Jenkins作业,它按预期工作,配置了“GitHub hook trigger for GITScm polling”选项,以便在任何推送到git存储库时自动构建。 我已经将这个Jenkins URL与多个git回购挂钩,比如< code>repo-A、< code>repo-B、< code>repo-B。< br> Jenkins作业在任何代码推送至这些回购时自动触发。 但是我想

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

  • 是否可以从另一个作业触发Jenkins多分支管道的立即扫描操作?我在将旧版本的Gitlab与Jenkins中的管道作业集成时遇到了某些问题,并遇到了这样的解决方法。 或者,现在可以使用notifyCommit web钩子触发扫描多分支管道吗? 这样做的目的是每当Git存储库中发生更改时扫描多分支管道,以便在这样的更改后检测到新的分支。另一个我无法以其他方式实现的目的(除了对我来说非常邪恶的每个分支