Jenkins Pipeline - как исправить синтаксическую ошибку в разделе матрицы?

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

В официальной документации говорится:

Этапы в декларативном конвейере могут иметь раздел матрицы, определяющий многомерную матрицу комбинаций имя-значение, которые должны выполняться параллельно.

Это мой (упрощенный) конвейер:

pipeline {
    agent { label 'production-linux' } // Set where this project can run

    stages {
        stage("do something") {
            matrix {
                axes {
                    axis {
                        name 'foo'
                        values 'bar1', 'bar2', 'bar3'
                      }
                  }
                stages{
                    stage("using $foo"){
                        steps{
                            step {
                              echo "using variable: $foo"
                            }
                        }
                    }
                }

            }
        }
    }
}

Но когда запускаю, получаю следующее:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 14: Unknown stage section "matrix". Starting with version 0.5, steps in a stage must be in a ‘steps’ block. @ line 14, column 9.
           stage("do something") {
           ^

WorkflowScript: 14: Expected one of "steps", "stages", or "parallel" for stage "do something" @ line 14, column 9.
           stage("do something") {
           ^

Раздел "Матрица" устарел?


person Moshe Zvi    schedule 06.12.2019    source источник
comment
Какую версию плагина декларативного конвейера вы установили? Попробуйте обновить его до версии 1.5 или выше.   -  person Joshua Coady    schedule 12.12.2019


Ответы (1)


Раздел "Матрица" устарел?

Нет, это не имеет. Исключение сообщает, что обнаружена синтаксическая ошибка.

Здесь отображается ваша синтаксическая ошибка:

steps{
     step {
         echo "using variable: $foo"
     }
}

Цитата из официальной документации:

Раздел шагов определяет серию из одного или нескольких шагов, которые должны быть выполнены в данной директиве стадии.

К сожалению, напрямую step-keyword не существует, каждая команда, которую вы выполняете в steps, в основном представляет собой step. Чтобы исправить синтаксическую ошибку, попробуйте следующее:

steps{
     echo "using variable: $foo"
}
person Michael Kemmerzell    schedule 06.12.2019
comment
Даже если вы исправите его, чтобы удалить step, ошибка останется прежней. Пример в документации (jenkins.io/doc/book/pipeline / syntax / # matrix-cell-directives) не работает с `` WorkflowScript: 7: Unknown stage section matrix. Начиная с версии 0.5, шаги в стадии должны быть в блоке «шагов». @ строка 7, столбец 9. stage ('BuildAndTest') {^ WorkflowScript: 7: Ожидается один из шагов, этапов или параллелей для этапа BuildAndTest @ строка 7, столбец 9. stage ('BuildAndTest') {^ `` ` - person Joshua Coady; 12.12.2019
comment
nm .. похоже, моя проблема в том, что это недавно выпущенная функция, для которой требуется версия 1.50 плагина декларативного конвейера: jenkins.io/blog/2019/11/22/welcome-to-the-matrix - person Joshua Coady; 12.12.2019
comment
Да, вы правы, похоже, он доступен только в одной из бета-версий. Также существует матричный плагин: plugins.jenkins.io/matrix-project не уверен, это может вам помочь. - person Michael Kemmerzell; 12.12.2019
comment
v1.5 вышла из бета-версии. Прошлой ночью я обновил наш сервер, и теперь у меня работает матрица. - person Joshua Coady; 12.12.2019
comment
большой! Рад это слышать :) - person Michael Kemmerzell; 12.12.2019