如何设置 Job DSL 创建的多分支作业的发现模式

2024-02-12

我是詹金斯的新手,我正在尝试解决一些问题。

有没有办法通过 Groovy 添加分支源行为。这是使用 Jenkins 分析 SonarQube 中的 GitHub 项目。

I'm creating a multi-branch pipeline but can't seem to figure out how to add the following behaviours. Behaviours

在 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 中创建作业时出现的默认设置?


您可以使用以下 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 - 发现当前的拉取请求修订以及与当前目标分支修订合并的拉取请求

Fork Pull 请求发现模式

由于 Jenkins 中的一个错误(JENKINS-60874 https://issues.jenkins.io/browse/JENKINS-60874),你必须使用configure block:

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——信任每个人
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置 Job DSL 创建的多分支作业的发现模式 的相关文章

随机推荐