sh文件中的错误替换错误

问题描述

作为Jenkins管道的一部分,我使用了一个环境变量。

这很好:

sh "docker build --build-arg aws_access=${env.AWS_ACCESS_KEY_ID} ...."

但是我们正在重构,现在我们需要在sh文件中使用该变量。

我们在jenkins文件中执行以下.sh文件

sh('./bin/someFile.sh')

在该文件中,我们执行以下操作:

#!/bin/bash
    .... some unrelated stuff .....
docker build --build-arg aws_access=${env.AWS_ACCESS_KEY_ID} ....

Jenkins构建失败:

./ bin / someFile.sh:第6行:aws_access = $ {env.AWS_ACCESS_KEY_ID}:错误 替代

我一直在搜索这个问题,并遵循在SO和其他地方找到的所有建议。我想念什么?

解决方法

使用Bash时不需要env.前缀-您直接引用环境变量:

docker build --build-arg aws_access=${AWS_ACCESS_KEY_ID}

Bash变量与Jenkins的变量有很大的不同,而且,在Jenkins脚本中,shell看不到那些“变量”,因为Jenkins已经用它们代替了值。