如果没有BASH,Jenkins Pipeline Step withEnv不起作用

时间:2016-11-18 08:04:47

标签: bash jenkins jenkins-pipeline jenkins-workflow

我在Jenkins管道中为容器设置环境变量时遇到了麻烦。 看来,“withEnv”与没有bash的机器不能很好地协同工作。

你知道吗?我找不到官方声明; - )

当我在Jenkins奴隶上运行以下片段时,它可以工作。 但是当它在没有BASH的docker容器中执行时,“$ test”没有设置。

 withEnv(["test='asd'"]){
      sh 'echo $test'
 }

https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-withenv-code-set-environment-variables

2 个答案:

答案 0 :(得分:4)

如果我没有弄错,我相信变量设置不正确。

试试这个:

withEnv(["test=asd"]){
      sh "echo \$test"
 }

在Jenkins管道中:

$var = Groovy parameter
\$var (within a sh closure) = Bash parameter
${var} = also refers to Groovy parameter

为了将groovy变量插入bash变量:

sh ("VAR=${GROOVY_VAR}")

在sh闭包内使用bash变量:

sh (" echo \$BASH_VAR")

答案 1 :(得分:0)

在Jenkins中使用withEnv时,我们必须使用单引号。

NumberParty

}

因为,变量扩展是由Bourne Shell而不是Jenkins完成的。 (引用文档)

在此处查找更多信息:https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/