#jenkins-pipeline #jenkins-groovy #jenkins-cli
Вопрос:
environment {
TEST_CRED = credentials('testcred')
}
stage("Test creds") {
steps {
sh """#!/bin/bash
sed -i '/:TESTCRED:/ c\:TESTCRED: ${TEST_CRED_USR}'
${WORKSPACE}/test/data/properties.txt
"""}
}
Отправляя таким образом, я могу отправлять учетные данные, но проблема в том, что я получаю предупреждение
Следующие шаги, которые были обнаружены, могут иметь небезопасную интерполяцию чувствительных переменных (нажмите здесь для объяснения).:
Как избежать предупреждения? Я попытался использовать три одинарные кавычки после sh, но когда я это делаю, мой сценарий конвейера терпит неудачу
Ответ №1:
Короткий ответ был бы таким: избавьтесь от двойных кавычек в команде sh вокруг учетных данных, и предупреждение должно исчезнуть. Однако в вашем коде есть две проблемы. 1) Вы фактически злоупотребляете учетными данными, напрямую используя переменную среды. 2) Вы используете учетные данные в строке в двойных кавычках (строка интерполирована). Я бы рекомендовал следующий подход.
pipeline {
stages {
stage( "Test creds" ) {
steps {
script {
withCredentials([usernamePassword(credentialsId: 'testcred', passwordVariable: 'password', usernameVariable: 'username')]) {
sh script: 'sed -i \'/:TESTCRED:/ c\:TESTCRED: ${username}\:${password}\'' "${WORKSPACE}/test/data/properties.txt", label: "test credentials"
}
}
}
}
}
}