jenkins - 詹金斯:声明性管道中的未知阶段部分“矩阵”
问题描述
我是 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 中的管道如下所示: lib 中的函数肯定没有任何问题,因为它们在其他几个运行没有问题的 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()
}
}
}
}
我试图实现的是管道为每个环境和数据库(每个单元)运行并执行阶段。但是我在哪里做错了?
我使用詹金斯:2.198
更新:解决方案是将插件升级到 1.5.0 以上的版本。有关更多信息,请参阅接受的答案。
解决方案
您使用什么版本的声明式管道?
Matrix 部分仅在声明式管道插件的 1.5.0 版本中添加
见https://github.com/jenkinsci/pipeline-model-definition-plugin/releases
pipeline-model-definition
要验证版本,请搜索jenkins.yourcompany.com/pluginManager/api/xml?depth=1
推荐阅读
- android - BottomNavigationView 向左侧添加额外空间
- javascript - 如何在提示时检索值?
- machine-learning - 可以在 h2o 中导入的 csv 文件最大大小
- java - Solr java.lang.ClassNotFoundException:执行 DataImportHandler 时的 net.minidev.json.writer.JsonReaderI
- r - 如何过滤数据框
- php - 如何像 Web 浏览器一样模拟请求?
- java - 适用于 Android 9 及更高版本的 FusedLocationProviderClient 后台服务
- typo3 - 未声明的参数传递给 ViewHelper
- reactjs - Mern heroku 重新加载页面时出现内部服务器错误
- python - 气泡上的边缘检测 cv2