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

标签 java jenkins jenkins-plugins hashicorp-vault

我有一个 jenkins 插件,是我最近编写的,用于从 HashiCorp Vault 中的 secret 中获取环境变量。 .

在大多数情况下,一切都按我预期的方式工作,除非我希望 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 本身的调用的问题。我将相应地更新这个问题的答案或更多相关信息。

最佳答案

is there a step I'm missing to ensure the environment variables are exported to each subsequent shell command?

没有。有test coverage为此,它有效。

您可以在 aws ... 之前运行 /usr/bin/env 来确定设置了什么并缩小问题范围。

关于java - Jenkins:从扩展 SimpleBuildWrapper 的类导出环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38836639/

相关文章:

java - JNI : Native library requires void*, 如何将 jbytearray 转换为 C void*

java - 构造函数参数解析

jenkins - Hudson 构建时趋势插件?

android - HockeyApp Jenkins 插件适用于 Android 吗?

java - 使用JavaScript替代Java进行签名加密(DESede/CBC/PKCS5Padding)

java - toString() : for debugging or for humans?

jenkins - System.setProperty ("sun.net.http.allowRestrictedHeaders", "true") 在 Jenkins 中不起作用

spring-boot - 将Maven项目化后,出现错误。构建Dockerfile时发生错误。怎么解决呢?

github - 内部可见 jenkins 实例中 jenkins 的 webhook 代理

email - Jenkins 和 Office365 电子邮件通知设置