Я пытаюсь написать сценарий Jenkins, и у меня возникают проблемы с разрешением одной команды.Существует оператор if
, который проверяет наличие удаленного каталога, и, если он доступен, он предоставляет разрешения для того же самого и, если нет, возвращает ошибку.Проблема в том, что часть пути к каталогу получена с использованием переменной, и на эту переменную ссылаются как $variable_name
.Проблема, с которой я сталкиваюсь, заключается в том, что эта переменная либо представляет собой полную строку, либо получает пустое значение внутри команды if.Когда мы проверяем значение снаружи, используя echo
, оно возвращает правильное значение.Ниже приведен фрагмент моего кода:
def myversion ="${params.VersionName}"
pipeline {
agent { label 'example' }
stages {
stage('Testing Stage') {
steps {
script {
sh "echo '${myversion}'"
sh '''if sshpass -p remote_user_password ssh remote_user_name@remote_user_address '[ -d "some_path_here-${myversion}/Mac" ]'; then
sshpass -p remote_user_password ssh remote_user_name@remote_user_address "echo remote_user_password | sudo -S chmod -R 777 some_path_here-${myversion}/Mac"
else
echo "failure"
fi'''
}
}
}
}
}
И вывод консоли
echo test
test
[Pipeline] sh
+ sshpass -p remote_user_password ssh remote_user_name@remote_user_address [ -d "some_path_here-${myversion}/Mac" ]
+ echo failure
failure
Из вывода консоли я вижу, что ${myversion}
идет как есть, а непереданный параметр ' test ' Любая помощь приветствуется.