没有BASH的Jenkins Pipeline Step withEnv无法正常工作

Seb*_*nar 1 bash jenkins jenkins-workflow jenkins-pipeline

我在Jenkins管道中为容器设置环境变量时遇到麻烦。似乎“ withEnv”在没有bash的机器上不能很好地工作。

你能确认吗?我找不到官方声明;-)

当我在Jenkins奴隶上运行以下代码片段时,它将起作用。但是,在没有BASH的docker容器中执行该命令时,未设置“ $ test”。

 withEnv(["test='asd'"]){
      sh 'echo $test'
 }
Run Code Online (Sandbox Code Playgroud)

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

Ita*_*not 5

如果我没记错的话,我相信该变量的设置不正确。

尝试这个:

withEnv(["test=asd"]){
      sh "echo \$test"
 }
Run Code Online (Sandbox Code Playgroud)

在詹金斯管道中:

$var = Groovy parameter
\$var (within a sh closure) = Bash parameter
${var} = also refers to Groovy parameter
Run Code Online (Sandbox Code Playgroud)

为了将一个groovy变量插入一个bash变量中:

sh ("VAR=${GROOVY_VAR}")
Run Code Online (Sandbox Code Playgroud)

在sh闭包内使用bash变量:

sh (" echo \$BASH_VAR")
Run Code Online (Sandbox Code Playgroud)

  • 总的来说,我同意。这就是它应该起作用的方式。不过,由于最初的代码片段使用了蜱虫,它也应该可以工作。但是当我选择一个 Linux 非常有限的容器时,withEnv 就不再工作了——变量只是没有设置。 (2认同)