#jenkins #groovy #jenkins-pipeline #terraform #jenkins-groovy
Вопрос:
Итак, я запускаю Terraform на Дженкинсе, и у меня есть работа Дженкинса, которая запускает «план терраформирования».
Это задание запускает отличный скрипт, который собирает кредит с помощью:
if [ "${env.repo_name}" = "repo5" ]; then
export TF_VAR_github_token=${getgithubtokenfortf()["gitHubToken"]};
fi
и getgithubtokenfortf на самом деле является еще одним сценарием, который вызывается сценарием плана терраформирования:
def call() {
def gitHubToken
withCredentials([string(credentialsId: 'xxxx', variable: 'GITHUB_TOKEN')]) {
gitHubToken = GITHUB_TOKEN
}
[gitHubToken: gitHubToken]
}
и идентификатор учетных данных хранится в Jenkins со значением токена!
Теперь проблема в том, что — когда я запускаю задание плана терраформирования в Дженкинсе, в выводе консоли я вижу значение выставленного токена.
[ repo5 = repo5 ]
export TF_VAR_github_token=xxxxx(valuefromtokenbeingexposedhere)
теперь я хочу именно этого … Я не хочу, чтобы значение было выставлено напоказ таким образом^ .. Я не хочу, чтобы он распечатывал значение токена.
как мне это исправить?
Комментарии:
1. Секреты в безопасности только внутри
withCredentials
блока. Если вы храните его в переменной и планируете использовать его за пределами блока, Дженкинс не сможет защитить эти секреты. Я рекомендую запустить всю вашу логику внутриwithCrednetails
блока.2. @Ram я не храню токен в переменной .. я сохранил в Дженкинсе, и, как вы видите, код, который он вызывает, использует код Дженкинса с помощью блока withCredentials. Я не уверен, где и что не так..
3. ‘gitHubToken=GITHUB_TOKEN » — это место, где вы используете дополнительную переменную
4. Выпущена поддержка аутентификации приложений на GitHub
5. Также смотрите Инъекцию Дженкинса с помощью интерполяции