По некоторым причинам вы возможно не захотите хранить учетные данные в Jenkins с помощью Credentials Plugin.
Тем не менее, вам все равно может понадобиться прятать конфиденциальные данные, такие как пароли или секретные ключи, из вывода консоли в Jenkins.
Одно из возможных решений — обернуть части кода, которые вы хотите скрыть, с помощью set +x
(перестать показывать вывод) и set -x
(возобновить показ вывода).
Однако более элегантным и эффективным решением является использование Mask Passwords Plugin, который позволяет маскировать пароли, которые могут появляться в консоли.
В этой заметке я покажу пример того, как можно прятать пароли в Jenkins-консоли, используя MaskPasswordsBuildWrapper
из декларативного Jenkins-пайплайна.
Дельный Совет: Расшифровка секретов, замаскированных с помощью плагина Jenkins Credentials! Читать Далее →
Маскировка Паролей в Jenkins
В первую очередь необходимо установить Mask Passwords Plugin.
Без установки этого плагина вы можете получить следующую ошибку:
java.lang.UnsupportedOperationException: no known implementation of class jenkins.tasks.SimpleBuildWrapper is named MaskPasswordsBuildWrapper
Пример Jenkinsfile
с секретными данными, которые необходимо спрятать:
// Define secret variables def MY_PASSWORD = "YWVyY3dxZWY" def MY_SECRET = "ZGZoeWt5OGt" // Mask secret variables and try to print pipeline { agent any stages { stage ("Print variable") { steps { wrap([$class: "MaskPasswordsBuildWrapper", varPasswordPairs: [[password: MY_PASSWORD], [password: MY_SECRET]]]) { echo "Password: ${MY_PASSWORD}" echo "Secret: ${MY_SECRET}" } } } } }
Если вы попытаетесь вывести переменные, замаскированные с помощью MaskPasswordsBuildWrapper
, то увидите, что их значения спрятаны за звездочками:
[Pipeline] echo Password: ******** [Pipeline] echo Secret: ********
Дельный Совет: Интерактивный запрос пользователя на ввод его учетных данных во время выполнения Jenkins-пайплайна! Читать далее →