詹金斯(Jenkins):使用作业dsl为github组织配置分支发现

时间:2018-08-08 12:48:23

标签: jenkins jenkins-plugins jenkins-job-dsl

我在为github组织文件夹配置我的工作dsl时遇到问题。我尝试根据打开的拉取请求自动发现分支。我尝试使用不推荐使用的buildOriginBranchWithPR(true),但没有成功。我还尝试了gitBranchDiscovery()gitTagDiscovery()的手,也没有太大结果。

我知道这些更改带来了几个问题,并且已经提出了一些解决方法。其中之一是使用作业dsl中的configure块直接与xml进行交互。我没有正确使用它。

如果我直接在Jenkins中使用GUI配置它,我就设法使其正常工作,但我想尽可能避免这种情况。

请在此处查看我要定义的工作的示例:

  organizationFolder('example-org') {
    description('This contains branch source jobs for example-org GitHub')
    displayName('example-org')
    triggers {
      periodic(2400)
    }
    organizations {
      github {
        repoOwner("example-owner")
        apiUri("https://api.github.com")
        credentialsId('jenkins-token')
        traits {
          publicRepoPullRequestFilterTrait()
        }
      }
    }
    configure {
      def traits = it / sources / data / 'jenkins.branch.BranchSource' / source / traits
      traits << 'org.jenkinsci.plugins.github__branch__source.BranchDiscoveryTrait' {
        strategyId(2)
      }
      traits << 'org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait' {
       strategyId(2)
     }
    }
    projectFactories {
      workflowMultiBranchProjectFactory {
        // Relative location within the checkout of your Pipeline script.
        scriptPath("Jenkinsfile")
      }
    }
  }

我正在使用詹金斯官方docker镜像的最新版本。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

为组织文件夹作业生成的config.xml与多分支管道作业的config.xml不同。您需要将configure块修改为类似的内容(注意获取特征列表更改的路径):

configure { def traits = it / navigators / 'org.jenkinsci.plugins.github__branch__source.GitHubSCMNavigator' / traits traits << 'org.jenkinsci.plugins.github_branch_source.BranchDiscoveryTrait' { strategyId 1 } traits << 'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait' { strategyId 2 trust(class: 'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustEveryone') } traits << 'org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait' { strategyId 2 } }