Jenkins:从 class 扩展 SimpleBuildWrapper 导出环境变量
Jenkins: Export environment variables from a class extending SimpleBuildWrapper
我最近写了一个 jenkins 插件,用于从 HashiCorp Vault 中的秘密获取环境变量。
在大多数情况下,一切都按我预期的方式工作,除非我希望 shell 命令知道设置的环境变量。我在覆盖 setUp method of the SimpleBuildWrapper class.
中设置环境变量
这是我如何设置环境变量的相关片段:
for (VaultSecretValue value : vaultSecret.getSecretValues()) {
context.env(value.getEnvVar(), values.get(value.getVaultKey()));
}
如果我添加一个构建步骤来回显环境变量,它 returns 预期的输出,但是,如果我在构建步骤中使用期望设置变量的外部命令,则似乎存在问题, 类似于 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
确定设置的内容并缩小问题范围。
我最近写了一个 jenkins 插件,用于从 HashiCorp Vault 中的秘密获取环境变量。
在大多数情况下,一切都按我预期的方式工作,除非我希望 shell 命令知道设置的环境变量。我在覆盖 setUp method of the SimpleBuildWrapper class.
中设置环境变量这是我如何设置环境变量的相关片段:
for (VaultSecretValue value : vaultSecret.getSecretValues()) {
context.env(value.getEnvVar(), values.get(value.getVaultKey()));
}
如果我添加一个构建步骤来回显环境变量,它 returns 预期的输出,但是,如果我在构建步骤中使用期望设置变量的外部命令,则似乎存在问题, 类似于 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
确定设置的内容并缩小问题范围。