我正在尝试构建一个Jenkins管道,它具有并行和顺序阶段的组合。我可以用静态数据完成同样的工作,但在使用动态数据时,即使用参数化构建和从构建参数中读取数据时,无法使其工作。
下面的代码段工作正常
pipeline {
agent any
stages {
stage('Parallel Tests') {
parallel {
stage('Ordered Tests Set') {
stages {
stage('Building seq test 1') {
steps {
echo "build seq test 1"
}
}
stage('Building seq test 2') {
steps {
echo "build seq test 2"
}
}
}
}
stage('Building Parallel test 1') {
steps {
echo "Building Parallel test 1"
}
}
stage('Building Parallel test 2') {
steps {
echo "Building Parallel test 2"
}
}
}
}
}
}
给出了下面的执行结果
现在我想从我的构建参数中读取值,然后循环stages。这就是我尝试过的,但不能让它工作。这一小段摘自我几个月前找到的另一个答案,但现在无法追踪,否则就会添加链接-
def parallelStagesMap = params['Parallel Job Set'].split(',').collectEntries {
["${it}" : generateStage(it)]
}
def orderedStagesMap = params['Ordered Job Set'].split(',').collectEntries {
["${it}" : generateStage(it)]
}
def orderedMap (){
def orderedStagesMapList= [:]
orderedStagesMapList['Ordered Tests Set']= {
stage('Ordered Tests Set') {
stages{
orderedStagesMap
}
}
}
return orderedStagesMapList;
}
def generateStage(job) {
return {
stage("stage: ${job}") {
echo "This is ${job}."
}
}
}
pipeline {
agent none
stages {
stage ("Parallel Stage to trigger Tests"){
steps {
script {
parallel orderedMap()+parallelStagesMap
}
}
}
}
}
发布于 2020-09-30 09:34:14
声明性和脚本化管道语法不能在管道中混合,请参阅Pipeline Syntax。因为您是基于参数动态创建管道定义的,所以除非您的用例与matrix
匹配,否则您最有可能完全使用脚本语法。
从您的Pipeline定义中删除声明性语法会得到类似下面的结果。请注意,我没有在活动的Jenkins实例上对其进行测试。
def parallelStagesMap = params['Parallel Job Set'].split(',').collectEntries {
["${it}" : generateStage(it)]
}
def orderedStagesMap = params['Ordered Job Set'].split(',').collectEntries {
["${it}" : generateStage(it)]
}
def orderedMap (){
def orderedStagesMapList= [:]
orderedStagesMapList['Ordered Tests Set']= {
stage('Ordered Tests Set') {
orderedStagesMap.each { key, value ->
value.call()
}
}
}
return orderedStagesMapList;
}
def generateStage(job) {
return {
stage("stage: ${job}") {
echo "This is ${job}."
}
}
}
stage("Parallel Stage to trigger Tests") {
parallel orderedMap()+parallelStagesMap
}
https://stackoverflow.com/questions/63985838
复制相似问题