Декларативный конвейер Jenkins: последовательное выполнение оси матричной сборки - PullRequest
2 голосов
/ 12 марта 2020

Я пытаюсь настроить матричную сборку и работаю над несколькими проблемами. Матрица выглядит так:

stage( 'BuildAll' ) {
    matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'win32vc9', 'win32vc19' 
            }                   
            axis {
                name 'VARIANT'
                values 'debug', 'release'                   
            }
            axis {
                name 'MODULES'
                values 'repo1/module1', 'repo1/module2', 'repo2/module1', 'repo2/module2'
            }
        }

        stages {                                                
            stage( 'Checkout' ) {
            }
            stage( 'Build' ) {
            }
            stage( 'Test' ) {
            }
       }

У меня проблема:

  • jenkins выполняет каждую ячейку матрицы в своем рабочем пространстве, но мои модули зависят друг от друга , Вот почему я хочу проверить их и построить в том же рабочем пространстве. Кстати, моя система сборки предназначена для работы со всеми вариантами (отладка / выпуск x vc9 / vc19) в одной рабочей области.

  • Дженкинс выполняет все ячейки параллельно. Что мне нужно, это сериализация выполнения оси MODULES.

Любые идеи, как я могу обойти это?

Например, есть ли способ описать что-то вроде al oop над несколькими модулями, которые генерируют последовательность этапов подряд, а не параллельно? В этой последовательности я мог реализовать матрицу только по двум осям.

Мне известен плагин расширенного рабочего пространства, но я не нашел документации о том, как использовать его в декларативных конвейерах.

Большое спасибо за заранее! С уважением, Кристоф

1 Ответ

0 голосов
/ 28 апреля 2020

Декларативный конвейер * Директива 1001 * в настоящее время не поддерживает последовательное выполнение.
Лучшее, что вы можете сделать в текущем синтаксисе matrix, это:

 stage( 'BuildAll' ) {
    matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'win32vc9', 'win32vc19' 
            }                   
            axis {
                name 'VARIANT'
                values 'debug', 'release'                   
            }
        }
        stages {                
            stage('repo1/module1') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
            stage('repo1/module2') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
            stage('repo2/module1') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
            stage('repo2/module2') {
                stages {
                    stage( 'Checkout' ) {
                    }
                    stage( 'Build' ) {
                    }
                    stage( 'Test' ) {
                    }
                }
            }
        }
    }
}

Другие просили подобное , Я подал JENKINS-62085 на основании этого вопроса.

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