我在为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镜像的最新版本。
预先感谢您的帮助。
答案 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
}
}