43

是否可以扫描多分支管道以检测带有 a 的分支Jenkinsfile,但不执行管道?

我的项目有不同的分支,当我从父管道多分支启动构建扫描时,我不希望所有带有 Jenkinsfile 的子管道分支开始执行。

4

6 回答 6

39

在您的Branch Sources部分中,您可以添加一个名为 Suppress automatic SCM triggering 的属性。

这可以防止 Jenkins 使用Jenkinsfile.

于 2017-05-19T08:50:42.350 回答
9

此外,您可以以编程方式进行

import jenkins.branch.*
import jenkins.model.Jenkins


for (f in Jenkins.instance.getAllItems(jenkins.branch.MultiBranchProject.class)) {
  if (f.parent instanceof jenkins.branch.OrganizationFolder) {
    continue;
  }
  for (s in f.sources) {
    def prop = new jenkins.branch.NoTriggerBranchProperty();
    def propList = [prop] as jenkins.branch.BranchProperty[];
    def strategy = new jenkins.branch.DefaultBranchPropertyStrategy(propList);
    s.setStrategy(strategy);
  }

  f.computation.run()
}

这是一个可以在 Jenkins 中执行的 Groovy 片段,它会进行扫描,但不会为所有发现的分支启动新的“构建”。

于 2018-10-10T14:56:04.203 回答
4

如果您使用的是 job-dsl,您可以简单地执行此操作,它会扫描所有内容,而无需在您第一次索引时实际运行构建。

organizationFolder('Some folder name') {
  buildStrategies {
    skipInitialBuildOnFirstBranchIndexing()
  }
}
于 2020-02-13T14:48:17.863 回答
4

要添加到@Stqs 的答案,您还noTriggerBranchProperty可以使用 Job DSL 插件进行设置,例如:

multibranchPipelineJob('example') {
  ...
  branchSources {
    branchSource {
      ...
      strategy {
        defaultBranchPropertyStrategy {
          props {
            // Suppresses the normal SCM commit trigger coming from branch indexing
            noTriggerBranchProperty()
            ...
          }
        }
      }
    }
  }
  ...
}
于 2019-10-01T13:15:16.393 回答
2
organizationFolder('my-folder') {

  buildStrategies {
     buildRegularBranches()
     buildChangeRequests {
       ignoreTargetOnlyChanges true
       ignoreUntrustedChanges false
     }
   }
}

注意:插件basic-branch-build-strategies是必需的

参考:

于 2021-02-28T08:16:07.533 回答
1

经过一番努力,我找到了这个解决方案,它应该只在分支索引时避免触发构建,而不是在提交后禁用自动构建。只需在项目的第一阶段添加它:

when {
    not {
        expression {
            def causes = currentBuild.getBuildCauses()
            String causesClass = causes._class[0]
            return causesClass.contains('BranchIndexingCause')
        }
    }
}
于 2021-05-11T16:18:56.863 回答