Общая настройка для параллельных стадий трубопровода Jenkins - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь настроить сборку 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.

Есть ли лучший способ сделать параллельные этапы, чем этот?

1 Ответ

0 голосов
/ 24 апреля 2018

Вы слышали о плагине Jenkins Multijob? https://wiki.jenkins.io/display/JENKINS/Multijob+Plugin

Может ли это соответствовать вашим потребностям?

У вас также есть возможность построить последующую работу, когда одна из ваших работ будет завершена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...