问题描述
作为Jenkins管道的一部分,我使用了一个环境变量。
这很好:
sh "docker build --build-arg aws_access=${env.AWS_ACCESS_KEY_ID} ...."
但是我们正在重构,现在我们需要在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已经用它们代替了值。