Как использовать `inject-passwords` в Jenkins Job Builder? - PullRequest
6 голосов
/ 23 апреля 2019

Я использую файл yaml для настройки задания jenkins, и я наткнулся на функцию inject-passwords (см. здесь ). Тем не менее, эта документация ни описывает, как использовать переменную в среде jenkins, ни что означает «зашифрованный» пароль ( Как шифровать? ). Ссылка, ведущая к EnvInjectPlugin , также не содержит необходимой информации.

Где я могу найти полезную информацию / документацию? И почему эта документация настолько неполная?

Контекст:

Я хочу безопасно вводить пароли в работу Дженкинса. В этой работе «Дженкинс» я хочу использовать этот пароль в качестве пароля для входа в онлайн-сервис, чтобы протестировать несколько аспектов этого сервиса. Мне нужен тестовый скрипт, чтобы получить этот пароль (переменная среды?), Чтобы иметь возможность войти в службу.

Открытые вопросы, на которые нет ответов в указанной документации:

  • Где информация о том, что Name of password ( здесь ) - это имя переменной среды?
  • Где находится информация о том, как зашифровать пароль: password (str) Encrypted password (см. здесь )

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Документация для введения пароля не используется. Поэтому я приведу полный пример здесь.

Сначала , вам нужно получить зашифрованный пароль.

  1. Перейдите к части конфигурации задания Jenkins, которую можно безопасно изменить. Например, тот, который вы сейчас пытаетесь настроить.
  2. В разделе «Среда сборки» нажмите «Ввести пароли для сборки как переменные среды».
  3. Напишите ваш простой пароль с фиктивным именем переменной и сохраните конфигурацию. Этот шаг зашифрует пароль за капотом.
  4. Перейдите на вкладку «История конфигурации задания» в «Задании» и посмотрите последний файл конфигурации RAW XML. Вы найдете в XML свой зашифрованный пароль, который можно скопировать для следующего шага.

Второй шаг, вам нужно ввести пароль в файл yaml следующим образом:

wrappers:
     - inject-passwords:
        global: true
        mask-password-params: true
        job-passwords:
            - name: TEST_USER_PASSWORD
              password: '{AQAAABAAAAAQvsFFVkOmzr5WzEhX8OWuK7mizr5xzEhX8lGo2AGMVw8=}'
            - name: TEST_USER_PASSWORD2
              password: '{AQAAABAAAAAQvsFFVkOmzr5xzEhX8lGo2AcPGMVw8b8SflGo2AcPGMVw8=}'

Примечание. Пароль указан в кавычках И в фигурных скобках.

Третий шаг: в jenkins вы можете использовать переменные окружения TEST_USER_PASSWORD и TEST_USER_PASSWORD2. Эти переменные будут содержать расшифрованный пароль , но когда вы распечатаете их, Дженкинс заметит, что в журнале есть пароль, который Дженкинс запутает.

Пример:

Фактическая выработка

My password is jddfdjh44y98dyghsdgdgfdg

вывод журнала Jenkins

My password is [********]

Вы можете напечатать содержимое переменной шаг за шагом, чтобы получить пароль (чтобы убедиться, что он работает).

1 голос
/ 02 мая 2019

В документации автор объясняет, что плагин «Вводить пароли в сборку как переменные среды» и, следовательно, как указал Александр Картапанис, доступен как переменная среды по имени ($ password_name).Эта информация распространяется на двух сайтах: в документации YAML говорится, что «Вводить пароли в сборку как переменные среды. Требуется плагин Jenkins EnvInject», на странице «Плагин EnvInject» говорится, что «Плагин Shared Objects вносит вклад в плагин Envinject, который позволяет вамзаполнить общие объекты как переменные среды ".В этом посте вы можете найти пример попытки доступа к переменной по ее имени - которая доступна только во время сборки.

При сохранении Jenkins гарантирует, что пароли зашифрованы.Насколько я понимаю, он будет расшифрован только для того, чтобы быть переданным в качестве переменной там, где это требуется для работы - как это будет сделано с любыми учетными данными.

Некоторая дополнительная информация о том, как работает плагин EnvInject, предоставлена ​​в ссылках.к другим связанным плагинам, таким как плагин Shared Objects

Пока вы просто используете пароль в качестве переменной среды и не записываете его значение, безопасно использовать его таким образом.Тот же подход или ссылка на идентификатор пароля используется, например, в конвейере Jenkins для доступа к учетным данным SCM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...