【发布时间】:2020-01-25 16:38:53
【问题描述】:
我在 Jenkins 管道中定义了全局变量
def BUILDNRO = '0'
pipeline { ...
然后我使用 shell 脚本操作变量,通过使用作业构建号作为标识符来启用并行运行构建,这样我们就不会混合不同的 docker swarm。
stage('Handle BUILD_NUMBER') {
steps {
script {
BUILDNRO = sh( script: '''#!/bin/bash
Build=`echo ${BUILD_NUMBER} | grep -o '..$'`
# Check if BUILD first character is 0
if [[ $Build:0:1 == "0" ]]; then
# replace BUILD first character from 0 to 5
Build=`echo $Build | sed s/./5/1`
fi
echo $Build
''',returnStdout: true).trim()
}
}
}
我从前一个阶段获取价值并尝试在下一阶段获取全局变量
stage('DOCKER: Init docker swarm') {
steps {
echo "BUILDNRO is: ${BUILDNRO}" --> Value is here.
sh '''#!/bin/bash
echo Buildnro is: ${BUILDNRO} --> This is empty.
...
}
}
这将使全局变量为空。为什么?在之前的阶段,它是有价值的。
编辑 1. 修改代码块以反映当前状态。
【问题讨论】:
标签: jenkins jenkins-pipeline sh jenkins-groovy