如何使用作业dsl配置基本的分支构建策略插件?

时间:2018-12-13 15:25:56

标签: jenkins github branch multibranch-pipeline

尽管如此,多分支管道插件并没有内置标签。需要使用basic-branch-build-strategies-plugin来启用标签发现和构建。

我的问题直接与:Is there a way to automatically build tags using the Multibranch Pipeline Jenkins plugin?

此插件在UI中效果很好,但似乎无法使用Jenkins job dsl轻松配置。有没有人有使用dsl(或dsl configure->)设置分支策略的示例,以便可以发现和构建标签?

通过ui更改设置后,已经检查了config.xml文件之间的差异,看来我需要能够添加此特征:

<org.jenkinsci.plugins.github__branch__source.TagDiscoveryTrait />

以及本节中的构建策略:

<buildStrategies
    <jenkins.branch.buildstrategies.basic.TagBuildStrategyImpl
        plugin="basic-branch-build-strategies@1.1.1">
        <atLeastMillis>-1</atLeastMillis>
        <atMostMillis>172800000</atMostMillis>
    </jenkins.branch.buildstrategies.basic.TagBuildStrategyImpl>
</buildStrategies>

1 个答案:

答案 0 :(得分:1)

类似

multibranchPipelineJob('pipline') {
  ...
  branchSources {
    branchSource {
      source {
        github {
          ...
          traits {
            ...
            gitTagDiscovery()
          }
        }
        buildStrategies {
          buildTags {
            atLeastDays '-1'
            atMostDays '20'
          }
        }
      }
    }
  }
}

是我一直在努力的。插件中没有记录该文件,但这并不能阻止job-dsl插件为其动态生成API调用。

您可以转到{your_jenkins_url}/plugin/job-dsl/api-viewer/index.html来查看特定Jenkins安装的API。 有时,由于插件缺少对job-dsl的支持,因此事情不会在那里出现。 在那种情况下,您仍然可以使用Configure Block生成xml。 但是,这非常笨拙。

编辑:至少如果我按照动态生成的API的建议使用gitHubTagDiscovery(),Jenkins将崩溃。相反,必须使用configure块来获取github的所有发现方法。

  configure {
    def traits = it / sources / data / 'jenkins.branch.BranchSource' / source / traits
    traits << 'org.jenkinsci.plugins.github__branch__source.BranchDiscoveryTrait' {
      strategyId(1)
    }
    traits << 'org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait' {
      strategyId(1)
    }
    traits << 'org.jenkinsci.plugins.github__branch__source.TagDiscoveryTrait'()
  }