Подтвердить что ты не робот

Дженкинс: доступ к глобальным паролям в PowerShell

У меня возникли проблемы с доступом к глобальному паролю jenkins в качестве переменной среды в powershell. Я сделал следующее. Не уверен, что еще мне не хватает.

  • Плагин привязки установленных учетных данных, плагин инжектора окружающей среды, плагин паролей масок, плагин Hudson PowerShell
  • Создана глобальная запись пароля для управления учетными данными в виде сглаживания
  • В моей сборке у меня есть вызов powershell с средой сборки, определяемой для ввода паролей в сборку как переменные среды и проверкой глобальных паролей.
  • Ни одно из следующего не позволяет мне ссылаться на глобальный пароль в моих сценариях powershell
    $env:gluser
    $gluser

Никто из них, похоже, не позволяет мне получить доступ к глобальному паролю в вызове powershell от Jenkins. Кто-нибудь может помочь?

4b9b3361

Ответ 1

Не путайте плагин EnvInject и плагин привязки учетных данных. Эти два делают совсем другие вещи, однако и позволяют управлять паролями глобально, но по-разному.

EnvInject way

  • Управление Jenkins Конфигурирование системы
  • В Глобальном пароле
    • Нажмите Add.
    • Введите имя (переменной среды) и пароль.
  • Работа Настройка
  • В Среда сборки
    1. проверить вложение паролей в сборку как переменные среды.
    2. Проверить глобальные пароли.
    3. Проверить параметры пароля маски.

Способ привязки учетных данных

  • Управление Jenkins Управление учетными данными
    • Нажмите Add Credentials (без домена).
    • Выберите Имя пользователя с паролем ИЛИ Секретный текст.
    • Введите имя пользователя и пароль или секрет.
  • Работа Настройка
  • В Среда сборки
    • Проверить Использовать секретный текст или файл (ы).
    • В разделе Привязки нажмите Add.
    • Выберите Имя пользователя и пароль ИЛИ Секретный текст.
    • Введите Variable имя, в котором вы хотите сохранить значение своих учетных данных.
    • Выберите переключатель Конкретные учетные данные.
    • Выберите настроенные учетные данные из раскрывающегося списка

В вашей Powershell

  • Доступ к ним, как и любая другая переменная среды:
    $env:VAR_NAME
    где VAR_NAME - имя переменной среды (т.е. шаг 2 из пути EnvInject или шаг 4 из способа привязки учетных данных)

Приложение

привязка EnvInject vs Credentials

  • Пары EnvInject будут отображаться зашифрованными в списке переменных среды.
  • В пароле EnvInject будут отображаться звездочки (*****) на выходе консоли.
  • В паролях EnvInject используется то же имя переменной, что и глобальная, поэтому вы должны помнить имя глобальной переменной.
    |
  • Пароли CB отображаются простым текстом в списке переменных среды.
  • Пароли CB не отображаются в консольном выпуске.
  • Пароли CB могут быть привязаны к любому имени переменной, которое вы хотите в задании, из выпадающего списка, поэтому вам не нужно запоминать это имя глобальной переменной.
    |
  • Связывание учетных данных действительно больше подходит для размещения файлов учетных данных, таких как сертификаты и ключи, а не значений пароля.

Имя пользователя с паролем и секретным текстом.

  • Первый доступен в форме username:password.
  • Последний просто secret.

Ответ 2

В нашей сборке мы используем его следующим образом (фактический код):

$deploymentdir = $env:VC_RES + "\azure"
. ".\src\Extensions\Setup\VirtoCommerce.PowerShell\deploy-tfs.ps1" -deployment $deploymentdir -solutiondir $env:WORKSPACE

а затем передать $deploymentdir как параметр в ps1, отлично работает.

Переменная окружения VC_RES настроена в разделе "Управление Jenkins" → Глобальные свойства. Существует флажок рядом с "Переменные среды", и мы устанавливаем их там. Переменная WORKSPACE устанавливается самим jenkins.