Я пытаюсь настроить сборку Jenkins, которая синхронизирует SVN с заданным списком изменений, а затем параллельно строит код для различных конфигураций. У меня есть шаг предварительной сборки, который нужно запустить один раз для каждого агента, независимо от того, сколько сборок будет собирать этот агент. Мой текущий декларативный конвейер выглядит так:
pipeline {
agent none
stages
{
stage('parallel')
{
failFast true
parallel
{
stage('Release')
{
agent {
label {
label "windows"
}
}
steps
{
checkout([$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [[credentialsId: 'SVN',
depthOption: 'infinity',
ignoreExternalsOption: false,
local: '.',
remote: 'https://my-repo']],
workspaceUpdater: [$class: 'UpdateUpdater']])
bat 'Prebuild.bat'
bat 'msbuild Game/Code/Application.sln "Release|x64"'
}
}
stage('Debug Optimized')
{
agent {
label {
label "windows"
}
}
steps
{
checkout([$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [[credentialsId: 'SVN',
depthOption: 'infinity',
ignoreExternalsOption: false,
local: '.',
remote: 'https://my-repo']],
workspaceUpdater: [$class: 'UpdateUpdater']])
bat 'Prebuild.bat'
bat 'msbuild Game/Code/Application.sln "Debug Optimized|x64"'
}
}
}
}
}
}
Хотя это работает а) оно не поддерживается (у меня есть около 20 конфигураций для создания в реальности, и я не хочу сохранять 20 копий моих настроек scm), б) он запускает извлечение / предварительную сборку один раз за этап, а не один раз на агента. Я заметил, что для агентов есть проверка по умолчанию, но, насколько я могу судить, это не работает с SVN.
Есть ли лучший способ сделать параллельные этапы, чем этот?