我想通过jenkins作业将少量参数发送到用linux服务器编写的我的shell脚本之一。以下是我的詹金斯管道工作:
def MY_VAR
def BUILD_NUMBER
pipeline {
agent any
stages {
stage('Stage One') {
steps {
script {
BUILD_NUMBER={currentBuild.number}
MY_VAR ='abc'
}
}
}
stage('Stage Two') {
steps {
sh '''
cd /scripts/
./my_scripts.sh $BUILD_NUMBER $MY_VAR'''
}
}
}
}
在这里,我可以发送的值,BUILD_NUMBER
但不能发送的值MY_VAR
。在我看来,自从MY_VAR
进入管道以来,正是如此。有人可以帮忙解决吗
如果要$MY_VAR
在执行sh
步骤时进行插值,则需要用双引号替换单引号。
def MY_VAR
def BUILD_NUMBER
pipeline {
agent any
stages {
stage('Stage One') {
steps {
script {
BUILD_NUMBER={currentBuild.number}
MY_VAR ='abc'
}
}
}
stage('Stage Two') {
steps {
sh """
cd /scripts/
./my_scripts.sh $BUILD_NUMBER $MY_VAR"""
}
}
}
}
这是$BUILD_NUMBER
可行的,因为管道公开了,env.BUILD_NUMBER
并且可以在shell步骤内作为bash的$BUILD_NUMBER
env变量访问此变量。或者,您可以将其设置MY_VAR
为环境变量,并在该sh
步骤中保留单引号。这样的事情应该可以解决问题:
pipeline {
agent any
stages {
stage('Stage One') {
steps {
script {
//you can remove BUILD_NUMBER assignment - env.BUILD_NUMBER is already created.
//BUILD_NUMBER={currentBuild.number}
env.MY_VAR ='abc'
}
}
}
stage('Stage Two') {
steps {
sh '''
cd /scripts/
./my_scripts.sh $BUILD_NUMBER $MY_VAR'''
}
}
}
}
您可以从我的一篇博客文章中了解有关Jenkins Pipeline环境变量的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句