首页 > 解决方案 > 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 和其他地方找到的所有建议。我错过了什么?

标签: bashshelljenkins

解决方案


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

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

Bash 变量与 Jenkins 的变量有很大不同,更重要的是,使用您的 Jenkins 脚本,shell 看不到那些“变量”,因为 Jenkins 已经用它们代替了这些值。


推荐阅读