我来这里已经很多年了,通常会找到我想要的答案,但是这次我有一个相当具体的问题。
我正在构建一个流水线,该流水线使用一个选择,一对字符串和withCredentials参数,通过一条流水线的3层路径遍历一个流水线中的一组步骤。哪个工作正常,直到我的产品部署在“ if else”测试失败的地方。
我有一个具有基本密码的(秘密文本)jenkins凭证,我试图将其与在构建开始时输入的字符串进行比较。我已经检查了咒语的基本用法,它可以按预期工作。但是,当我将其添加到完整的管道中时,它将失败。
我认为这是因为我没有使用带有步骤,脚本,节点或顺序的正确语法...?这对我来说是一个新的空间,我希望有人在此代码空间中花费更多时间会看到我的错误。谢谢!提前!
失败:
...
stage('Deploy_PROD') {
when {
expression { params.DEPLOY_TO == 'Deploy_PROD'}
}
steps{
withCredentials([string(credentialsId: '${creds}', variable: 'SECRET')]) {
script {
if ('${password}' == '$SECRET') {
sh 'echo yes'
} else {
sh 'echo no'
}
}
}
}
}
作品:
stage('example')
node {
withCredentials([string(credentialsId: '${creds}', variable: 'SECRET')]) {
if ('${password}' == '$SECRET') {
sh 'echo "test"'
} else {
sh 'echo ${password}'
}
}
}
答案 0 :(得分:0)
解决方案应该是
if (password == SECRET) {
也建议阅读-What's the difference of strings within single or double quotes in groovy?
答案 1 :(得分:0)
我最终在我们的AD服务器上使用了withCredentials选项,从而可以更好地控制用户对部署到受控环境的访问。感谢您的协助。