我是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中的管道如下所示: 库中的函数肯定没有任何问题,因为它们已在其他几个运行没有问题的jenkins文件中使用。
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()
}
}
}
}
我试图实现的是,管道针对每个环境和数据库(每个单元)运行并执行各个阶段。 但是我在哪里犯了错误?
我使用詹金斯:2.198
更新:解决方案是将插件升级到1.5.0以上的版本。有关更多信息,请参见接受的答案。
答案 0 :(得分:5)
您使用什么版本的声明性管道?
仅在声明性管道插件的1.5.0版本中添加了“矩阵”部分
请参见https://github.com/jenkinsci/pipeline-model-definition-plugin/releases