在 Jenkins 中获取凭据时新创建的部署管道失败

问题描述 投票:0回答:1

我愿意通过 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
                        '''
                    }
                }
            }
        }

Jenkins 错误输出

看起来,它无法找到“sf-auth-creds”,我们是否可以详细查看错误?

看起来,它无法找到“sf-auth-creds”,我们是否可以详细查看错误?

jenkins jenkins-pipeline salesforce cicd jenkins-pipeline-unit
1个回答
0
投票

开始

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 将“尝试”阻止凭证泄漏;因此,直接打印凭证密码和可选的用户名是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.