我正在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变量,这将使我们像这样 图片='$ base_ver'-'$ git_hash' 我尝试了多种方法来执行此操作,但是它们似乎都不起作用,是否可以在env变量部分中访问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()
}
请告诉我这是否可行或正确的方法。 谢谢。
答案 0 :(得分:0)
您当前正在做的是启动shell,在其中定义变量并退出。没有打印任何内容,因此返回的stdout为空。
可以通过groovy进行串联。无需为此启动外壳。
你的这个:
Image = base_ver + '-' + git_hash
如果出于任何原因需要在shell中执行此操作,只需添加echo(还要注意双引号,以便在调用shell之前使用常规的替换变量):
Image=sh(script: "echo -n '${base_ver}-${git_hash}'", returnStdout: true).trim()
答案 1 :(得分:0)
我尝试过这种方法,对我有用。谢谢大家的建议。
sh """
Image=${PROD_ECR_REPO}:${env.base_ver}-${env.git_hash}
echo \$Image
"""