#bash #jenkins #groovy
#bash #дженкинс #groovy
Вопрос:
Я работаю над скриптовым конвейером Дженкинса. Я сохранил секрет в плагине учетных данных. Я хочу использовать этот секрет при создании достижения с использованием 7z. Вот мой код:
stage('Zip and Encrypt Artifacts') {
withCredentials([string(credentialsId: 'encryption_key', variable: 'SHARED_PASSWORD')]) {
archive = report.replace(".txt",".7z")
sh "7z a -p${SHARED_PASSWORD} -mhe ${archive} ${report}"
sh "rm ${report}"
}
}
Этот код работает с простым паролем. Но это не удается с надежным паролем.
Каково ваше предложение? Как я должен изменить sh
команду?
Спасибо.
Ответ №1:
Укажите все ваши переменные:
sh '''
7z a "-p${SHARED_PASSWORD}" -mhe "${archive}" "${report}"
rm "${report}"
'''
Обратите внимание, что вам нужно использовать одинарные кавычки вокруг скрипта, чтобы вы могли использовать двойные кавычки внутри него. Вы должны использовать двойные кавычки в команде оболочки, чтобы переменные были расширены.
Комментарии:
1. Спасибо @Barmar, ваш прежний ответ сработал. я имею в виду вот это:
sh "7z a -mhe '${archive}' '${report}' -p'${SHARED_PASSWORD}'"
затем я протестировал вашу новую версию. Это не сработало. Я думал, что проблема в"-p${SHARED_PASSWORD}"
этом. Итак, я протестировал-p"${SHARED_PASSWORD}"
. Это не сработало. Я перешел-p
к концу строки, и это тоже не сработало. В любом случае, спасибо за вашу помощь, и я рад, что постоянно обновлял эту страницу.2. Может быть, я не понимаю, как заменяются переменные. Я думал, что они просто помещаются в среду, а затем заменяются оболочкой, но похоже, что Jenkins выполняет свои собственные замены.