我有一个jenkins插件,我最近写了它来从HashiCorp Vault中的秘密中获取环境变量。
在大多数情况下,一切都按我期望的方式运行,除非我期望shell命令知道所设置的环境变量。我在setUp类的覆盖的SimpleBuildWrapper方法中设置环境变量。
这是我如何设置环境变量的相关片段:
for (VaultSecretValue value : vaultSecret.getSecretValues()) {
context.env(value.getEnvVar(), values.get(value.getVaultKey()));
}
如果添加构建步骤以回显环境变量,则它会返回预期的输出,但是,如果我在构建步骤中使用外部命令期望设置该变量,则似乎会出现问题,例如AWS cli:
aws --region us-east-1 ec2 describe-instances
如果我使用相同的环境变量值并将其导出到本地终端,则上述命令的结果将是我期望的。
我的问题是,在扩展
SimpleBuildWrapper
时,是否缺少确保环境变量导出到每个后续Shell命令的步骤?如果可以提供更多信息,请告诉我。
更新
我检查了
/usr/bin/env
的输出,并设置了环境变量。我认为这可能是我如何自行实现对vault
的调用的问题。我将使用答案或更相关的信息来相应地更新此问题。 最佳答案
我缺少确保环境变量导出到每个后续Shell命令的步骤吗?
否。有test coverage可以使用。
您可以在/usr/bin/env
之前运行aws …
以确保确定了什么并缩小了范围。