Я настраиваю Jenkins 2.332.3 с JCasC и конвейером Multibranch. Конвейер в целом в порядке, но требует, чтобы мы нажали Эта папка пуста | Настроить проект а потом Сохранять чтобы он распознавал любые задания при первой инициализации экземпляра jenkins!
Ожидаемое поведение: когда модуль kubernetes инициализируется и Jenkins запускается в первый раз, он должен автоматически воздействовать на настроенный многоветвевой конвейер, создавая экземпляры заданий. Он НЕ должен отображать веб-страницу «Эта папка пуста | Настроить проект», и проект уже должен быть «сохранен».
Любые идеи о том, как включить автоматическую настройку многоветвевого проекта, будут высоко оценены.
Наш код JCasC приведен ниже:
вакансии: |
вакансии:
- скрипт: >
OrganizationFolder('Организация Xobabia') {
buildStrategies {
skipInitialBuildOnFirstBranchIndexing()
}
description("Организация Xobabia")
displayName('Организация Xobbia')
// "Проекты"
организации {
битбакет {
URL-адрес сервера("https://xobabia.com")
repoOwner("xobbia")
учетные данные("${XOBABIA_SECRET_BITBUCKET_APP_CREDS_USERNAME}")
// "Черты" ("Поведения" в графическом интерфейсе), которые "декларативно-совместимы"
// черты {
// webhookRegistrationTrait {
// режим('ЭЛЕМЕНТ')
// }
//}
}
}
// «Черты» («Поведение» в графическом интерфейсе), которые НЕ «декларативно-совместимы»
// Для некоторых признаков нам нужно настроить это вручную, пока JobDSL не справится с этим
// https://issues.jenkins.io/browse/JENKINS-45504
настроить {узел ->
def traits = node/navigators/'com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMNavigator'/traits
// Фильтр по имени (с регулярным выражением)
черты << 'jenkins.scm.impl.trait.RegexSCMSourceFilterTrait' {
regex('infra-k8s-namespaces-and-quotas|infra-jenkins-tests|infra-aws-iam|infra-docker|infra-k8s-rbac|infra-terraform-keycloak')
}
// Обнаружение ветвей
черты << 'com.cloudbees.jenkins.plugins.bitbucket.BranchDiscoveryTrait' {
Идентификатор стратегии('1')
// Ценности
// 1 : Исключить ветки, которые также зарегистрированы как PR
// 2 : Только ветки, которые также зарегистрированы как PR
// 3 : Все ветки
}
черты << 'com.cloudbees.jenkins.plugins.bitbucket.SSHCheckoutTrait' {
учетные данные ('bitbucket-ssh')
}
// Обнаружение запросов на извлечение из источника
черты << 'com.cloudbees.jenkins.plugins.bitbucket.OriginPullRequestDiscoveryTrait' {
Идентификатор стратегии('1')
// Ценности
// 1 : Слияние запроса на включение с текущей ревизией целевой ветки
// 2 : Текущая версия запроса на включение
// 3: Текущая версия запроса на вытягивание и запрос на вытягивание объединены с текущей ревизией целевой ветки
}
// Обнаружение пулл-реквестов от форков
черты << 'com.cloudbees.jenkins.plugins.bitbucket.ForkPullRequestDiscoveryTrait' {
Идентификатор стратегии('1')
// Ценности
// 1 : Слияние запроса на включение с текущей ревизией целевой ветки
// 2 : Текущая версия запроса на включение
// 3: Текущая версия запроса на вытягивание и запрос на вытягивание объединены с текущей ревизией целевой ветки
идентификатор доверия ('2')
// Ценности
// 0 : Все
// 1 : Разветвления в одной учетной записи
// 2 : Никто
}
}
// "Распознаватель проектов"
проектФабрики {
рабочий процессMultiBranchProjectFactory {
scriptPath 'Дженкинсфайл'
}
}
// "Стратегия потерянных предметов"
orphanedItemStrategy {
отказаться от старых элементов {
днейХранить(10)
числосохранить(10)
}
}
// "Сканирование триггеров папок организации" : 1 день
// Нам нужно настроить это вручную, потому что JobDSL пока разрешает только 'periodic(int min)'
настроить {узел ->
узел / триггеры / 'com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger' {
спец('Ч Ч * * *')
интервал(86400000)
}
}
}
Огромное спасибо