Var*_*har 8 groovy jenkins jenkins-job-dsl jenkins-pipeline
我不能在下面的访问阶段使用先前块中设置的环境变量.
pipeline{
agent any
stages{
stage("set env variable"){
steps{
script{
env.city = "Houston"
}
}
}
}
stage("access"){
steps{
sh """
set brf = ${env.city}
echo $brf
"""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误:groovy.lang.MissingPropertyException:没有这样的属性:brf for class:groovy.lang.Binding
使用jenkins声明性管道env变量的简单方法是什么?
小智 20
我不能在下面的访问阶段使用先前块中设置的环境变量.
如果仔细查看错误,可以看到Jenkins实际上无法访问brf,而不是env.city.
这里的问题是由Jenkins解释$var内部sh块的方式引起的:
"double quotes",$varin sh "... $var ..."将被解释为Jenkins变量;'single quotes',$varin sh '... $var ...'将被解释为shell变量.由于sh脚本中的代码被包装"double quotes",$brf被认为是一个Jenkins变量,而没有定义这样的变量,因此会发生错误.
要在双引号块内使用shell变量,请在\之前添加$:
sh "echo \$var"
Run Code Online (Sandbox Code Playgroud)
的工作方式与
sh 'echo $var'
Run Code Online (Sandbox Code Playgroud)
这应该修复你的管道脚本:
pipeline{
agent any
stages{
stage("set env variable"){
steps{
script{
env.city = "Houston"
}
}
}
stage("access"){
steps{
sh """
brf=${env.city}
echo \$brf
"""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
管道输出:
[test] Running shell script
+ brf=Houston
+ echo Houston
Houston
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25551 次 |
| 最近记录: |