Jenkins: экспорт переменных среды из класса, расширяющего SimpleBuildWrapper

У меня есть плагин jenkins, который я недавно написал для исходных переменных среды из секретов в HashiCorp Vault.

По большей части все работает так, как я ожидал, за исключением случаев, когда я ожидаю, что команда оболочки будет знать установленные переменные среды. Я устанавливаю переменные среды в переопределенном 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 мне не хватает шага, чтобы гарантировать, что переменные среды экспортируются в каждую последующую команду оболочки?

Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

ОБНОВЛЕНИЕ

Я проверил вывод /usr/bin/env, и переменные среды установлены. Я думаю, что проблема может заключаться в том, как я сам реализую вызовы vault. Я обновлю этот вопрос соответственно либо ответом, либо более соответствующей информацией.


person ptierno    schedule 08.08.2016    source источник


Ответы (1)


есть ли шаг, который мне не хватает, чтобы гарантировать, что переменные среды экспортируются в каждую последующую команду оболочки?

Нет. Существует тестовое покрытие для этого, и он работает.

Вы можете запустить /usr/bin/env перед aws …, чтобы точно увидеть, что устанавливается, и сузить проблему.

person Jesse Glick    schedule 08.08.2016
comment
Спасибо за это. Я только что обновил вопрос. Я уже проверял env вывод. Это может быть не столько проблема с API плагина, сколько моя реализация. Я буду продолжать обновлять соответственно. еще раз спасибо. - person ptierno; 09.08.2016
comment
Спасибо. как оказалось, вы правы, и это работает. Проблема заключалась в том, что API-интерфейсу aws iam требуется пара секунд, чтобы сделать доступными учетные данные, предоставляемые хранилищем. бросание sleep 5 перед моей командой aws cli помогло. еще раз спасибо - person ptierno; 11.08.2016