【问题标题】:How to set the discovery modes for multibranch job created by Job DSL如何为 Job DSL 创建的多分支作业设置发现模式
【发布时间】:2021-06-07 12:27:01
【问题描述】:

我是 Jenkins 的新手,我正在努力解决问题。

有没有办法通过 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)
        }
    }
}

我尝试添加以下参数,但它会引发错误。

import jenkins.plugins.git.traits.*

def traits = []
traits.add(new TagDiscoveryTrait())
traits.add(new LocalBranchTrait())
gitSCMSource.setTraits(traits)

有没有办法通过 Groovy 创建作业,但使用在 UI 中创建作业时会显示的默认设置?

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-groovy jenkins-job-dsl


    【解决方案1】:

    您可以使用此 URL 检查 Jenkins 上的所有可用选项:

    https://<your-jenkins>/plugin/job-dsl/api-viewer/index.html
    

    分支发现模式

    multibranchPipelineJob('Foo') {
        branchSources {
            branchSource {
                source {
                    github {
                        traits {
                            gitHubBranchDiscovery {
                                strategyId(1)
                                // strategyId(2)
                                // strategyId(3)
                            }
                        }
                    }
                }
            }
        }
    }
    

    策略 ID:

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

    拉取请求发现模式

    multibranchPipelineJob('Foo') {
        branchSources {
            branchSource {
                source {
                    github {
                        traits {
                            gitHubPullRequestDiscovery {
                                strategyId(1)
                                // strategyId(2)
                                // strategyId(3)
                            }
                        }
                    }
                }
            }
        }
    }
    

    策略 ID:

    • 1 - 发现每个拉取请求一次,发现的修订对应于与目标分支的当前修订合并的结果
    • 2 - 发现每个拉取请求一次,发现的修订版对应于拉取请求头修订版而不合并
    • 3 - 发现当前的拉取请求修订版,并将拉取请求与当前目标分支修订版合并

    分叉拉取请求发现模式

    由于 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')
            }
        }
    }
    

    策略 ID:

    • 1 - 发现每个拉取请求一次,发现的修订对应于与目标分支的当前修订合并的结果
    • 2 - 发现每个拉取请求一次,发现的修订版对应于拉取请求头修订版而不合并
    • 3 - 发现当前的拉取请求修订版,并将拉取请求与当前目标分支修订版合并

    信任类:

    • TrustPermission - 信任那些对存储库有写权限的人
    • TrustNobody - 不信任任何人
    • TrustContributors - 信任仓库的贡献者
    • TrustEveryone - 信任每个人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      相关资源
      最近更新 更多