这是我的密码:" ASD123 $ 567"
这不起作用
withCredentials([usernamePassword(credentialsId: 'creds',
usernameVariable: 'myuser', passwordVariable: 'mypass')]) {
sh "some command --username ${myuser} --password ${mypass}"
}
我在输出中看到的是mypass没有被混淆,最重要的是它似乎在" $"之后被切断了。所以它只显示ASD123
编辑:我对这个崩溃的地方感到有些困惑,看起来它实际上是转换到Shell步骤,特别是造成了这个问题。
答案 0 :(得分:2)
您可以使用凭据功能:
pipeline {
...
stage("Credentials") {
environment {
MY_CREDENTIAL = credentials('creds')
}
steps {
// Single quotes!
sh 'echo ${MY_CREDENTIAL}'
sh 'echo ${MY_CREDENTIAL_USR}:${MY_CREDENTIAL_PSW}'
}
}
}
有关详细信息,请查看https://github.com/jenkinsci/pipeline-model-definition-plugin/wiki/Environment-variables
答案 1 :(得分:0)
我的解决方案(如果你想称之为):
subscriptions
答案 2 :(得分:0)
我在执行一些没有sshagent
的远程ssh脚本时遇到了同样的问题。我的密码中有几个$,需要输入mysql -p
接受的解决方案对我不起作用,因为当我通过它们时没有一个美元被泄露。
我最终使用两种建议的解决方案${mypass.replaceAll('\\$','\\\\\\$')}
pipeline {
...
stage("Credentials") {
environment {
MY_CREDENTIAL = credentials('creds')
}
steps {
// Single quotes!
sh """
ssh user@server "
mysqldump -u${MY_CREDENTIAL_USR} -p'${MY_CREDENTIAL_PSW.replaceAll('\$','\\\$')}' DBNAME > dump.sql
"
"""
}
}
}