Передача учетных данных из диспетчера учетных данных Дженкинса в файл свойств, который присутствует в рабочей области Дженкинса с помощью sed -i

#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"
     }
    }
   }
  }
 }
}