Jenkins:从扩展SimpleBuildWrapper的类中导出环境变量

时间:2016-08-08 19:00:31

标签: java jenkins jenkins-plugins hashicorp-vault

我最近写了一个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自我调用的问题。我会相应地用答案或更多相关信息更新这个问题。

1 个答案:

答案 0 :(得分:2)

  

是否缺少一个步骤以确保将环境变量导出到每个后续的shell命令?

没有。这有test coverage,它可以工作。

您可以在/usr/bin/env之前运行aws …,以确定要设置的内容并缩小问题范围。