Вот мой взгляд на проблему на данный момент. Он имеет определенные ограничения, но, по крайней мере, пароль не хранится в секретах и не доступен для хостинг-провайдера Буду очень рад комментариям по улучшению. Опять же, я действительно хочу сделать пароль доступным для определенных сборок, но хранить его в недоступном для людей с доступом к файловой системе и машине
Некоторые задания в jenkins зависят от пароля, хранящегося в переменных ENV. Дженкинс должен продолжать работать без этого пароля, только конкретная сборка должна дать сбой, если пароли не предоставлены. Это, например, сборки резервных копий БД.
Пароль может храниться в секретах / секретах, но это означает, что хостинг-провайдер будет иметь доступ к этим паролям. Это не желательно. При запуске jenkins пароли предоставляются в виде переменных ENV.
Чтобы сделать это, их нужно добавить в / etc / default / jenkins и добавить к аргументам deamon в /etc/init.d/jenkins
.
Добавьте пароль в / etc / default / jenkins с помощью
SPECIAL_PASSWORD=123
Пароль обрабатывается /etc/init.d/jenkins и добавляется в DAEMON_ARGS следующим образом:
if [ -n "$SPECIAL_PASSWORD" ]; then
echo "Using SPECIAL_PASSWORD provided by /etc/default/jenkins"
DAEMON_ARGS="$DAEMON_ARGS --env=SPECIAL_PASSWORD=$SPECIAL_PASSWORD"
fi
Это делает SPECIAL_PASSWORD доступным для jenkins при запуске. Пароль отображается на вкладке SystemInfo в jenkins как переменная ENV и может использоваться заданиями сборки jenkins.
Хранение пароля в / etc / default / jenkins нежелательно. Это снова делает его доступным для хостинг-провайдера.
Вот почему я реализовал следующие сценарии, которые
1. попросить пароль
2. добавляет SPECIAL_PASSWORD в / etc / default / jenkins
3. перезапускает Дженкинс
4. восстанавливает / etc / default / jenkins в исходную версию без пароля
#!/bin/bash
# The script requies passwords for starting jenkins and places this password
# in the jenkins env. It then restarts jenkins after which the file is returned
# to the original
read -s -p "Enter SPECIAL_PASSWORD: " SPECIAL_PASSWORD
cp /etc/default/jenkins /etc/default/jenkins.bck
echo "SPECIAL_PASSWORD=$SPECIAL_PASSWORD" >> /etc/default/jenkins
echo "Contents of the jenkins env"
service jenkins restart
cp /etc/default/jenkins.bck /etc/default/jenkins
Ограничения:
1. Пароль на короткое время доступен в /etc/default/jenkins.
.
2. Пароль доступен в виде простого текста в виде переменной ENV для всего jenkins.