#jenkins #jenkins-pipeline #jenkins-groovy #jenkins-job-dsl
Вопрос:
Я новичок в Дженкинсе и пытаюсь кое-что понять.
Есть ли способ добавить поведение источников ветвей с помощью Groovy. Это делается для анализа проектов GitHub в SonarQube с использованием Дженкинса.
Я создаю многоответвленный конвейер, но, похоже, не могу понять, как добавить следующее поведение.
Это поведение по умолчанию возникает при создании задания в пользовательском интерфейсе, но не отображается при создании задания с помощью 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, но с настройками по умолчанию, которые будут отображаться при создании задания в пользовательском интерфейсе?
Ответ №1:
Вы можете проверить все доступные параметры на вашем Jenkins, используя этот URL-адрес:
https://<your-jenkins>/plugin/job-dsl/api-viewer/index.html
Режим обнаружения филиалов
multibranchPipelineJob('Foo') {
branchSources {
branchSource {
source {
github {
traits {
gitHubPullRequestDiscovery {
strategyId(1)
// strategyId(2)
// strategyId(3)
}
}
}
}
}
}
}
Идентификатор стратегии:
- 1 — откройте все ветви, кроме ветвей, которые являются источниками запросов на извлечение
- 2 — обнаруживайте только ветви, которые являются источниками запросов на вытягивание
- 3 — откройте для себя все филиалы
Режим обнаружения запроса на вытягивание
multibranchPipelineJob('Foo') {
branchSources {
branchSource {
source {
github {
traits {
gitHubPullRequestDiscovery {
strategyId(1)
// strategyId(2)
// strategyId(3)
}
}
}
}
}
}
}
Идентификатор стратегии:
- 1 — обнаружьте каждый запрос на вытягивание один раз с обнаруженной редакцией, соответствующей результату слияния с текущей редакцией целевой ветви
- 2 — обнаружьте каждый запрос на вытягивание один раз с обнаруженной редакцией, соответствующей редакции заголовка запроса на вытягивание, без объединения
- 3 — откройте текущую редакцию запроса на извлечение и запрос на извлечение, объединенный с текущей редакцией целевой ветви
Режим обнаружения запроса на вытягивание вилки
Из-за ошибки в Дженкинсе (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')
}
}
}
Идентификатор стратегии:
- 1 — обнаружьте каждый запрос на вытягивание один раз с обнаруженной редакцией, соответствующей результату слияния с текущей редакцией целевой ветви
- 2 — обнаружьте каждый запрос на вытягивание один раз с обнаруженной редакцией, соответствующей редакции заголовка запроса на вытягивание, без объединения
- 3 — откройте текущую редакцию запроса на извлечение и запрос на извлечение, объединенный с текущей редакцией целевой ветви
Класс доверия:
- TrustPermission — доверяйте тем, у кого есть разрешение на запись в репозиторий
- Доверяй никому — никому не доверяй
- TrustContributors — доверительные участники репозитория
- Доверяй всем — доверяй всем