【问题标题】:Jenkins: Export environment variables from a class extending SimpleBuildWrapperJenkins:从扩展 SimpleBuildWrapper 的类中导出环境变量
【发布时间】:2016-12-14 16:01:07
【问题描述】:

我最近编写了一个 jenkins 插件,用于从 HashiCorp Vault 中的秘密中获取环境变量。

在大多数情况下,一切都按照我的预期进行,除非我希望 shell 命令知道设置的环境变量。我在SimpleBuildWrapper 类的覆盖setUp 方法中设置环境变量。

这是我如何设置环境变量的相关 sn-p:

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 的调用的问题,这可能是问题所在。我将相应地更新此问题,提供答案或更多相关信息。

【问题讨论】:

    标签: java jenkins jenkins-plugins hashicorp-vault


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我刚刚更新了这个问题。我已经检查了env 输出。这可能不是插件 API 问题,而是我对它的实现。我会不断更新。再次感谢。
    • 谢谢。事实证明你是对的并且它有效。问题是 aws iam api 需要几秒钟才能使保管库提供的凭据可用。在我的 aws cli 命令前面扔一个 sleep 5 就可以了。再次感谢
    猜你喜欢
    • 2014-03-11
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 2020-03-04
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多