如何为 Job DSL 创建的多分支作业设置发现分支策略

How to set the discover branches strategy for multibranch job created by Job DSL

我正在通过 Groovy 创建多分支管道作业。

multibranchPipelineJob('example') {
    branchSources {
        github {
            id('23232323')
            scanCredentialsId('github-ci')
            repoOwner('OwnerName')
            repository('job-dsl-plugin')
        }
    }
    orphanedItemStrategy {
        discardOldItems {
            numToKeep(10)
        }
    }
}

这很好用,但是将 Discover Branches Strategy 设置为 All branches

有没有办法将 排除也作为 PR 归档的分支设置为默认值?

branchSources/github 是静态的 API,您不应该使用它。 Job DSL 插件的作者停止支持它。更安全的选择是使用动态 API。您可以使用 URL:

检查 Jenkins 上可用的选项
https://<your-jenkins>/plugin/job-dsl/api-viewer/index.html

这是你应该使用的:

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)
        }
    }
}

策略编号:

  • 1 - 发现所有分支,作为拉取请求源的分支除外
  • 2 - 仅发现作为拉取请求源的分支
  • 3 - 发现所有分支