Issue
I'm creating a multi-branch pipeline job via Groovy.
multibranchPipelineJob('example') {
branchSources {
github {
id('23232323')
scanCredentialsId('github-ci')
repoOwner('OwnerName')
repository('job-dsl-plugin')
}
}
orphanedItemStrategy {
discardOldItems {
numToKeep(10)
}
}
}
This works fine, but sets the Discover Branches Strategy to All branches
Is there a way to set Exclude Branches that are also filed as PRs to be the default?
Solution
branchSources/github
is a static API and you shouldn't use it. The author of the Job DSL plugin stopped supporting it. The safer option is to use a dynamic API. You can check which options are available on your Jenkins by using this URL:
https://<your-jenkins>/plugin/job-dsl/api-viewer/index.html
This is what you should use:
multibranchPipelineJob('example') {
branchSources {
source {
github {
id('23232323')
apiUri('apiUrl, example: https://github.com/api/v3')
credentialsId('github-ci')
repoOwner('OwnerName')
repository('job-dsl-plugin')
repositoryUrl('repositoryUrl')
configuredByUrl(false)
traits {
gitHubBranchDiscovery {
strategyId(1)
}
}
}
}
}
orphanedItemStrategy {
discardOldItems {
numToKeep(10)
}
}
}
Strategy id:
- 1 - discover all branches, except branches that are pull request sources
- 2 - discover only branches that are pull request sources
- 3 - discover all branches
Answered By - agabrys