Дженкинс: Неизвестный этап раздела «Матрица» в декларативном конвейере - PullRequest
1 голос
/ 24 марта 2020

Я новичок в jenkins и пытаюсь построить декларативный конвейер в соответствии с руководством. На странице: https://jenkins.io/doc/book/pipeline/syntax/#matrix -cell-directives есть пример того, как построить конвейер с матрицей, которую я пробовал.

К сожалению, я получаю следующую ошибку:

WorkflowScript: 32: Unknown stage section "matrix". Starting with version 0.5, steps in a stage must be in a ‘steps’ block. @ line 32, column 5.
       stage ('Deploy NB') {
       ^

WorkflowScript: 32: Expected one of "steps", "stages", or "parallel" for stage "Deploy NB" @ line 32, column 5.
       stage ('Deploy NB') {

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

pipeline {

  agent {
    node {
      label ""
      // Location of the output files 
      customWorkspace "/home/wf/builds/${env.JOB_NAME}"
    }
  }

  environment {
      // mail addresses that gets notifications about failures, success etc., - comma delimited
      MAIL_NOTIFY = "mustbeanonymous"

      // Server admin (not necessary for wildfly)
      ADMIN_USER = " "
      ADMIN_PWD = " "

      // home directory
      HOME_DIR = "/home/wf"

      // Product name
      PRODUCT_NAME = "MYPRD"
   }

  options {
    disableConcurrentBuilds() 
    durabilityHint("PERFORMANCE_OPTIMIZED")
  }

  stages {
    stage ('Deploy NB') {
      matrix {
        axes {
           axis {
             name 'ENVIRONMENT'
             values 'NB', 'TEST1'
           }
           axis {
             name 'DATABASE'
             values 'ORA', 'ORA_INIT', 'DB2', 'DB2_INIT'
           }
        }

        environment {
          // Server scripts installation path
          SERVER_PATH = "${HOME_DIR}/WildFly16_${PRODUCT_NAME}_${ENVIRONMENT}_${DATABASE}"
          // EAR to deploy on server
          DEPLOY_EAR = "${PRODUCT_NAME}_WF_${DATABASE}.ear"
        }

        stages {
          /* BUILD */
          stage('Init tools') {
            steps {
              script {
                def lib = load "${workspace}/build/Jenkinsfile.lib"
                lib.initTools()    
              }
            }
          }

          stage('Copy Deployment') {
            steps {
              script {
                def lib = load "${workspace}/build/Jenkinsfile.lib"
                lib.copyDeployment()    
              }
            }
          }

          /* DEPLOY */
          stage('Install EAR') {
            steps {
              script {
                  def lib = load "${workspace}/build/Jenkinsfile.lib"
                  lib.installEARDeploy()    
              }
            }
          }
        }
      }
    }
  }


  /* POST PROCESSING */
  post {  
     success {  
        script {
            def lib = load "${workspace}/build/Jenkinsfile.lib"
            lib.onSuccess()    
        }
     }  
     failure {  
        script {
            def lib = load "${workspace}/build/Jenkinsfile.lib"
            lib.onFailure()    
        }
     }  
     unstable {  
        script {
            def lib = load "${workspace}/build/Jenkinsfile.lib"
            lib.onUnstable()    
        }
     }  
     always {
        script {
            def lib = load "${workspace}/build/Jenkinsfile.lib"
            lib.onAlways()    
        }
     }
   }              
}

Что я пытаюсь для достижения этого необходимо, чтобы конвейер работал для каждой среды и базы данных (каждая ячейка) и выполнял этапы. Но где я допустил ошибку?

Я использую Jenkins: 2.198

Обновление: решение было обновить плагин до версии выше 1.5.0. См. Принятый ответ для получения дополнительной информации.

1 Ответ

5 голосов
/ 24 марта 2020

Какую версию декларативного конвейера вы используете?

Раздел матрицы был добавлен только в версии 1.5.0 плагина декларативного конвейера

См. https://github.com/jenkinsci/pipeline-model-definition-plugin/releases

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