![](/img/trans.png)
[英]Set environment variables then run script in Jenkins Scripted Pipeline
[英]To pass variables set in jenkins pipeline to shell script
我想从 jenkins 作业向我在 linux 服务器中编写的 shell 脚本之一发送一些参数。 下面是我的 jenkins 管道作业:
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
被设置为管道,这就是它发生的原因。 有人可以帮忙解决吗
如果要在执行sh
步骤时插入$MY_VAR
,则需要将单引号替换为双引号。
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 管道环境变量的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.