Met*_*tro 4 jenkins jenkins-job-dsl jenkins-groovy jenkins-pipeline
我是詹金斯的新手,我正在尝试解决一些问题。
有没有办法通过 Groovy 添加分支源行为。这是使用 Jenkins 分析 SonarQube 中的 GitHub 项目。
我正在创建一个多分支管道,但似乎无法弄清楚如何添加以下行为。

在 UI 中创建作业时,这些行为默认出现,但通过 Groovy 创建作业时不会出现。
我已将其定义为我的管道。知道如何添加这些其他参数吗?
multibranchPipelineJob('Foo') {
displayName('Foo')
description('Jenkins')
branchSources {
branchSource {
source {
github {
id('15')
repoOwner('12345')
repository('foo')
repositoryUrl('https://example.com')
configuredByUrl(true)
credentialsId('foo')
traits {
gitBranchDiscovery()
}
}
}
}
}
orphanedItemStrategy {
discardOldItems {
numToKeep(10)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加以下参数,但它会引发错误。
import jenkins.plugins.git.traits.*
def traits = []
traits.add(new TagDiscoveryTrait())
traits.add(new LocalBranchTrait())
gitSCMSource.setTraits(traits)
Run Code Online (Sandbox Code Playgroud)
有没有办法通过 Groovy 创建作业,但使用在 UI 中创建作业时出现的默认设置?
aga*_*rys 10
您可以使用以下 URL 检查 Jenkins 上的所有可用选项:
https://<your-jenkins>/plugin/job-dsl/api-viewer/index.html
Run Code Online (Sandbox Code Playgroud)
multibranchPipelineJob('Foo') {
branchSources {
branchSource {
source {
github {
traits {
gitHubBranchDiscovery {
strategyId(1)
// strategyId(2)
// strategyId(3)
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
策略 ID:
multibranchPipelineJob('Foo') {
branchSources {
branchSource {
source {
github {
traits {
gitHubPullRequestDiscovery {
strategyId(1)
// strategyId(2)
// strategyId(3)
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
策略 ID:
由于 Jenkins 中的错误 ( JENKINS-60874 ),您必须使用该configure块:
multibranchPipelineJob('Foo') {
configure {
def traits = it / 'sources' / 'data' / 'jenkins.branch.BranchSource' / 'source' / 'traits'
traits << 'org.jenkinsci.plugins.github__branch__source.ForkPullRequestDiscoveryTrait' {
strategyId(1)
// strategyId(2)
// strategyId(3)
trust(class: 'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission')
// trust(class: 'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustNobody')
// trust(class: 'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustContributors')
// trust(class: 'org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustEveryone')
}
}
}
Run Code Online (Sandbox Code Playgroud)
策略 ID:
信托类别: