bash - Jenkins Pipeline Step withEnv 在没有 BASH 的情况下无法工作

标签 bash jenkins jenkins-pipeline jenkins-workflow

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

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

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

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

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

最佳答案

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

试试这个:

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")

关于bash - Jenkins Pipeline Step withEnv 在没有 BASH 的情况下无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40672083/

相关文章:

unit-testing - Jenkins 从不同的用户开始构建

Jenkins 管道: Check status of another project last build

linux - 将一个文件的内容插入到另一个文件中(在发送文件的特定行中)-BASH/LINUX

bash - 如何在 bash 中使用单个循环处理多个级别的结果?

groovy - 允许在 Jenkins/Hudson 处于关闭模式时运行一些作业

git - 用于基于新发布标签触发 jenkins 的 groovy job DSL

jenkins - Jenkins groovy 文件中的 File.exists() 不起作用

Linux (Raspbian) 自动启动脚本

string - 庆典 : Bad Substitution

ubuntu - 如何刷新 Jenkins 违规历史