Jenkins pipeline Jenkins管道引用环境变量部分中的环境变量

Jenkins pipeline Jenkins管道引用环境变量部分中的环境变量,jenkins-pipeline,Jenkins Pipeline,我在Jenkins管道中创建了两个环境变量 environment{ base_ver=sh(script: 'grep FROM ${WORKSPACE}/Dockerfile | awk -F : \'{print $2}\'', returnStdout: true).trim() git_hash=sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() } 现在我想在同一节中使用上述两个变量创建另一个env

我在Jenkins管道中创建了两个环境变量

environment{
base_ver=sh(script: 'grep FROM ${WORKSPACE}/Dockerfile | awk -F : \'{print $2}\'', returnStdout: true).trim()
git_hash=sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
}
现在我想在同一节中使用上述两个变量创建另一个env变量,我们会这样做吗 Image='$base\u ver'-'$git\u hash' 我尝试了多种方法,但似乎都不起作用,我们可以在env variable部分中访问env变量吗? 这是我试过的

environment{
base_ver=sh(script: 'grep FROM ${WORKSPACE}/Dockerfile | awk -F : \'{print $2}\'', returnStdout: true).trim()
git_hash=sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
Image=sh(script: 'DockerImage=${base_ver}-${git_hash}', returnStdout: true).trim()

}
请让我知道这是否是可行的或正确的方法。
谢谢。

您当前要做的是启动shell,在其中定义变量并退出。没有打印任何内容,因此返回的标准输出为空

连接可以由groovy完成。没有必要为此推出shell。
这是:

Image=base\u ver+'-'+git\u hash

如果出于任何原因需要在shell中执行此操作,只需添加echo(还要注意双引号,以便groovy在调用shell之前替换变量):


Image=sh(脚本:“echo-n'${base\u ver}-${git\u hash}',returnStdout:true)。trim()

当前要做的是启动shell,在其中定义变量并退出。没有打印任何内容,因此返回的标准输出为空

连接可以由groovy完成。没有必要为此推出shell。
这是:

Image=base\u ver+'-'+git\u hash

如果出于任何原因需要在shell中执行此操作,只需添加echo(还要注意双引号,以便groovy在调用shell之前替换变量):


Image=sh(脚本:“echo-n'${base\u ver}-${git\u hash}',returnStdout:true)。谢谢你们的建议

sh """
Image=${PROD_ECR_REPO}:${env.base_ver}-${env.git_hash}
echo \$Image
"""

我试过这种方法,它对我有效。谢谢你们的建议

sh """
Image=${PROD_ECR_REPO}:${env.base_ver}-${env.git_hash}
echo \$Image
"""

这些应该是正常变量,而不是环境变量。这会有帮助的。这些应该是正常变量,而不是环境变量。那会有帮助的。