Jenkins Parallel Build 读入一个空映射,但它保存了前一阶段的数据
Jenkins Parallel Build reads in an empty map, but it held data in a previous stage
试图使并行构建更加动态的新手。
使用这个声明性脚本
而不是阅读预先填充的地图 def jobs = ["JobA", "JobB", "JobC"]
,效果很好。
我正在尝试从一个全局地图变量 JOBS = []
中读取,我使用 JOBS.add("JobAAA")
语法在一个阶段中填充它。
在管道阶段打印出 JOBS
显示里面有内容,
JOBS map is [JobAAA, JobBBB, JobCCC]
但是当我使用它生成并行构建时它似乎变空了并且我收到错误消息
No branches to run
我知道我一定在某个地方混淆了我的理解,但是谁能给我指出正确的方向。
这是我正在使用的代码
def jobs = ["JobA", "JobB", "JobC"]
JOBS_MAP = []
def parallelStagesMap = jobs.collectEntries() {
["${it}" : generateStage(it)]
}
def parallelStagesMapJOBS = JOBS_MAP.collectEntries(){
["${it}" : generateStage(it)]
}
def generateStage(job) {
return {
stage("Build: ${job}") {
echo "This is ${job}."
}
}
}
pipeline {
agent any
stages {
stage('populate JOBS map') {
steps {
script {
JOBS_MAP.add("JobAAA")
JOBS_MAP.add("JobBBB")
JOBS_MAP.add("JobCCC")
}
}
}
stage('print out JOBS map'){
steps {
echo "JOBS_MAP map is ${JOBS_MAP}"
}
}
stage('parallel job stage') {
steps {
script {
parallel parallelStagesMap
}
}
}
stage('parallel JOBS stage') {
steps {
script {
parallel parallelStagesMapJOBS
}
}
}
}
}
试试这个:
def jobs = ["JobA", "JobB", "JobC"]
JOBS_MAP = []
def generateStage(job) {
return {
stage("Build: ${job}") {
echo "This is ${job}."
}
}
}
pipeline {
agent any
stages {
stage('populate JOBS map') {
steps {
script {
JOBS_MAP.add("JobAAA")
JOBS_MAP.add("JobBBB")
JOBS_MAP.add("JobCCC")
}
}
}
stage('print out JOBS map'){
steps {
echo "JOBS_MAP map is ${JOBS_MAP}"
}
}
stage('parallel job stage') {
steps {
script {
def parallelStagesMap = jobs.collectEntries() {
["${it}" : generateStage(it)]
}
parallel parallelStagesMap
}
}
}
stage('parallel JOBS stage') {
steps {
script {
def parallelStagesMapJOBS = JOBS_MAP.collectEntries(){
["${it}" : generateStage(it)]
}
parallel parallelStagesMapJOBS
}
}
}
}
}
试图使并行构建更加动态的新手。
使用这个声明性脚本
而不是阅读预先填充的地图 def jobs = ["JobA", "JobB", "JobC"]
,效果很好。
我正在尝试从一个全局地图变量 JOBS = []
中读取,我使用 JOBS.add("JobAAA")
语法在一个阶段中填充它。
在管道阶段打印出 JOBS
显示里面有内容,
JOBS map is [JobAAA, JobBBB, JobCCC]
但是当我使用它生成并行构建时它似乎变空了并且我收到错误消息
No branches to run
我知道我一定在某个地方混淆了我的理解,但是谁能给我指出正确的方向。
这是我正在使用的代码
def jobs = ["JobA", "JobB", "JobC"]
JOBS_MAP = []
def parallelStagesMap = jobs.collectEntries() {
["${it}" : generateStage(it)]
}
def parallelStagesMapJOBS = JOBS_MAP.collectEntries(){
["${it}" : generateStage(it)]
}
def generateStage(job) {
return {
stage("Build: ${job}") {
echo "This is ${job}."
}
}
}
pipeline {
agent any
stages {
stage('populate JOBS map') {
steps {
script {
JOBS_MAP.add("JobAAA")
JOBS_MAP.add("JobBBB")
JOBS_MAP.add("JobCCC")
}
}
}
stage('print out JOBS map'){
steps {
echo "JOBS_MAP map is ${JOBS_MAP}"
}
}
stage('parallel job stage') {
steps {
script {
parallel parallelStagesMap
}
}
}
stage('parallel JOBS stage') {
steps {
script {
parallel parallelStagesMapJOBS
}
}
}
}
}
试试这个:
def jobs = ["JobA", "JobB", "JobC"]
JOBS_MAP = []
def generateStage(job) {
return {
stage("Build: ${job}") {
echo "This is ${job}."
}
}
}
pipeline {
agent any
stages {
stage('populate JOBS map') {
steps {
script {
JOBS_MAP.add("JobAAA")
JOBS_MAP.add("JobBBB")
JOBS_MAP.add("JobCCC")
}
}
}
stage('print out JOBS map'){
steps {
echo "JOBS_MAP map is ${JOBS_MAP}"
}
}
stage('parallel job stage') {
steps {
script {
def parallelStagesMap = jobs.collectEntries() {
["${it}" : generateStage(it)]
}
parallel parallelStagesMap
}
}
}
stage('parallel JOBS stage') {
steps {
script {
def parallelStagesMapJOBS = JOBS_MAP.collectEntries(){
["${it}" : generateStage(it)]
}
parallel parallelStagesMapJOBS
}
}
}
}
}