#jenkins #jenkins-pipeline
#Дженкинс #дженкинс-конвейер
Вопрос:
—-Ниже приведен мой файл JenkinsFile (сценарий конвейера)——
withCredentials([usernamePassword(credentialsId: 'test', usernameVariable: 'US
ER', passwordVariable: 'PWD')])
{
sh "${gradle} -Prdsuser=${USER} -Prdspass='${PWD}'"
}
Здесь проблема с аргументом «PWD», который будет заменен на 2 ‘iblm98> # пример пароля (который имеет одинарную кавычку’)
Но когда я делаю сборку jenkins, получаю ошибку ниже из-за одинарной кавычки, присутствующей в пароле.
Как избежать этой одинарной кавычки в jenkinsfile (сценарий конвейера) и добиться успешной сборки?
script.sh : Синтаксическая ошибка: Незаконченная строка в кавычках
Заранее благодарю вас!
Комментарии:
1. Если в вашем пароле нет пробелов, вы можете удалить одинарную кавычку aound
'${PWD}'
Ответ №1:
Вы можете экранировать все одинарные кавычки в PWD с помощью String.replaceAll():
withCredentials([usernamePassword(credentialsId: 'test', usernameVariable: 'USER', passwordVariable: 'PWD')]) {
sh "${gradle} -Prdsuser=${USER} -Prdspass='${PWD.replaceAll(/'/, /\'/)}'"
}
В приведенном выше коде ${PWD.replaceAll(/'/, /\'/)}
все '
вхождения экранируются с '
помощью .
Обратите внимание, что /'/
и /\'
являются строками с косой чертой.
Комментарии:
1. Vinicza благодарит вас за ответ. Я не уверен, как, но ниже сработало для меня. Тем не менее, мое значение PWD имеет одинарную кавычку, но когда я использую кавычку dobule с обратной косой чертой, это сработало. -Prdspass= «$ {PWD}»
2. Это работает, потому
PWD
что в настоящее время не содержит двойных кавычек. Та же проблема возникнетPWD='foo"bar'
, например, с .