我正在尝试编写Jenkins脚本,但无法解析一个命令。有一条RV[2].searchsorted(r[:,2],sorter=np.argsort(RV[2]))
语句,用于检查是否存在远程目录,如果该目录可用,它将为该目录提供权限,否则将返回失败。问题在于,目录路径的一部分是使用变量派生的,并且该变量被引用为if
。我面临的问题是,该变量要么作为一个完整的字符串出现,要么在if命令中得到一个空值。当我们使用$variable_name
检查外部值时,它将返回正确的值。
以下是我的一段代码:
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
的原样而不是传递的参数“ test ”
任何帮助表示赞赏。
答案 0 :(得分:0)
将单个配额更改为外部sh命令的两倍:
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"""
}
}
}
}
}
答案 1 :(得分:0)
最后,在进行了许多不同的调整尝试之后,在此处找到了解决方案:
尽管Jenkins Pipeline语法生成器能够生成Jenkins脚本,但它可能并不总是有用。在这种情况下,我必须使用双引号而不是单引号,并修改内部的-d
命令。最后是一个工作代码:
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"""
}
}
}
}
}