我愿意通过 Jenkins 通过 bitbucket 部署到 Salesforce。但是,我遇到了一个问题,我的部署失败了。我无法在“使用 Salesforce 进行身份验证”阶段打印“passwordVariable”和“usernameVariable”。我附上了 Jenkins 日志的截图。
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Authenticate with Salesforce') {
steps {
script {
withCredentials([usernamePassword(credentialsId: 'sf-auth-creds', passwordVariable: 'SFDC_PASSWORD', usernameVariable: 'SFDC_USERNAME')]) {
println('sf-auth-creds!!')
println credentialsId
println passwordVariable
println usernameVariable
sh '''
sf login --instanceurl https://login.salesforce.com --clientid xyz123 --clientsecret xyz123 --username $SFDC_USERNAME --password $SFDC_PASSWORD
'''
}
}
}
}
看起来,它无法找到“sf-auth-creds”,我们是否可以详细查看错误?
看起来,它无法找到“sf-auth-creds”,我们是否可以详细查看错误?
开始
credentialsId
,passwordVariable
和usernameVariable
不是变量;它们是函数usernamePassword(...)
的参数。以您的示例的方式使用它可能会导致(空指针/未定义?)错误/异常。
withCredentials([usernamePassword(credentialsId: 'sf-auth-creds', passwordVariable: 'SFDC_PASSWORD', usernameVariable: 'SFDC_USERNAME')]) {...}
翻译后,您正在告诉 Jenkins(通过管道)使用 id 的凭据在环境变量
$SFDC_PASSWORD
上设置密码,并在大括号 $SFDC_USERNAME
(“范围”)内的 {}
上设置用户名: sf-auth-creds
。
额外说明:Jenkins 将“尝试”阻止凭证泄漏;因此,直接打印凭证密码和可选的用户名是不可能的。