我有一个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 …以确保确定了什么并缩小了范围。

09-03 22:46
查看更多