使用groovy init创建Jenkins WorkflowMultibranchProject作业

时间:2018-01-31 18:42:06

标签: jenkins groovy jenkins-pipeline

我正在自动配置Jenkins母版以实现一键式实例化。我们为每个实例创建了6个标准作业,我希望能够通过groovy.init.d脚本创建它们,但是没有找到这类作业的示例。

我们使用cloudbees Bitbucket Team / Project插件,最终创建WorkflowMultibranchProject类型的作业,并附加配置以连接到我们的本地Bitbucket实例。

有没有人有通过groovy创建这样一份工作的样本?我最好尝试使用JobDSL创建工作(我已经为母亲种子工作做了这个)

[更新]:在下面的答案的帮助下,提出了一个完整的示例,创建了一个完整的Bitbucket团队/项目工作:https://github.com/redfive/jenkins-init/blob/master/init.groovy.d/core-jobs.groovy

1 个答案:

答案 0 :(得分:1)

使用Job DSL后,如果与使用Groovy相比更容易,那么我就不会有50/50未定(因为Job DSL缺乏对某些配置选项的支持)。

可以在@coderanger关于https://coderanger.net/jenkins/的文章中找到类似OrganizationFolder的示例:

  // Create the top-level item if it doesn't exist already.
  def folder = jenkins.items.isEmpty() ? jenkins.createProject(OrganizationFolder, 'MyName') : jenkins.items[0]
  // Set up GitHub source.
  def navigator = new GitHubSCMNavigator(githubOrg)
  navigator.credentialsId = cred.id // Loaded above in the GitHub section.
  navigator.traits = [
    // Too many repos to scan everything. This trims to a svelte 265 repos at the time of writing.
    new jenkins.scm.impl.trait.WildcardSCMSourceFilterTrait('*-cookbook', ''),
    // We have a ton of old branches so try to limit to just master and PRs for now.
    new jenkins.scm.impl.trait.RegexSCMHeadFilterTrait('^(master|PR-.*)'),
    new BranchDiscoveryTrait(1), // Exclude branches that are also filed as PRs.
    new OriginPullRequestDiscoveryTrait(1), // Merging the pull request with the current target branch revision.
  ]
  folder.navigators.replace(navigator)

下次我设置一个实例时,我可能会尝试一下。

相关问题