我试着运行一个脚本来决定Jenkins步骤是否运行.这个脚本需要凭据,我们可以通过调用withCredentials
来访问它.
下面是一个稍微简化的示例:
stage('Sample test stage') {
when {
expression {
withCredentials([usernamePassword(credentialsId: 'MY_CREDENTIALS_ID', usernameVariable: 'MY_USERNAME', passwordVariable: 'MY_TOKEN')]) {
return sh([returnStdout: true, script: 'node bin/my-script ${MY_TOKEN}']).trim().startsWith('success')
}
}
}
steps {
echo 'I should only run when the script passes'
}
}
然而,这不起作用.Jenkins返回错误:"语法错误:错误的替换."
我假设这取决于试图传递凭据时使用的语法.我尝试了几种变体,例如返回"withCredentials"和将整个表达式包装在"withCredentials"中,但两者都有相当大的错误.
我找不到这方面的任何文件,这让我怀疑这是否违法
我觉得自己很傻.Groovy中的`"和``之间存在差异.在单引号中,只有Bash替换可以工作.在双引号中,Groovy和Bash替换都可以工作.