Jenkinsfile 创建临时组织失败
Jenkinsfile Creating Scratch Org Failing
我正在尝试使用 Jenkins 在 BitBucket 和 Salesforce 之间创建持续集成,但我在创建 Scratch Org 时遇到了问题。我认为 Jenkinsfile 设置正确。这是:
node {
def SF_JENKINSUSER = env.SF_JENKINS_USER
def SF_USERNAME = env.SF_JENKINS_USER + '.' + env.SF_DEV
def SF_URL = env.SF_TESTURL
def SF_PROD = env.SF_PRODURL
def SF_DEV_HUB = env.SF_DEVHUB
stage('Checkout Source') {
checkout scm
}
withEnv(["HOME=${env.WORKSPACE}"]) {
withCredentials([string(credentialsId: 'SF_CONSUMER_KEY_BIND', variable: 'SF_CONSUMER_KEY'), file(credentialsId: 'SERVER_KEY_CREDENTALS_ID', variable: 'server_key_file')]) {
stage('Authorize DevHub Org') {
try {
rc = command "sfdx force:auth:jwt:grant -r ${SF_PROD} -i ${SF_CONSUMER_KEY} -u ${SF_JENKINSUSER} -f ${server_key_file} --setdefaultdevhubusername -a ${SF_DEV_HUB}"
if ( rc != 0 ) {
echo '========== ERROR: ' + rc
error 'Salesforce org authorization failed.'
}
else {
command "sfdx force:org:list"
echo '========== LOGGED IN =========='
}
}
catch (err) {
echo "========== DEVHUB AUTHORIZATION FAILURE: ${err} =========="
}
}
// Create a new scratch org to test the repo
stage('Create Test Scratch Org') {
try {
rc = command "sfdx force:org:create -s -f config\project-scratch-def.json -a TestScratch -w 10 -d 1"
if (rc != 0) {
error 'Salesforce test scratch org creation failed.'
}
}
catch (err) {
echo "========== SCRATCH ORG CREATION FAILURE: ${err} =========="
}
}
}
} }
def command(script) {
if ( isUnix() ) {
return sh(returnStatus: true, script: script);
}
else {
return bat(returnStatus: true, script: script);
}
对这里的格式表示歉意。现在,我无法弄清楚结果。它说组织的连接状态是 JwtGrantFailure 并且它正在寻找 server.key 文件而不是命令行中的临时 json 文件。以下是此作业输出的相关部分:
E:\DevOps_Root\JENKINS\workspace\TestingCIPipeline2>sfdx force:org:list
=== Orgs
ALIAS USERNAME ORG ID CONNECTED STATUS
(D) DevHub sa.jenkins@[...].com 00D300000000UicEAE JwtGrantError
No active scratch orgs found. Specify --all to see all scratch orgs
[Pipeline] echo
========== LOGGED IN ==========
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Create Test Scratch Org)
[Pipeline] isUnix
[Pipeline] bat
E:\DevOps_Root\JENKINS\workspace\TestingCIPipeline2>sfdx force:org:create -s -f config\project-scratch-def.json -a TestScratch -w 10 -d 1
ERROR running force:org:create: ENOENT: no such file or directory, open
'E:\DevOps_Root\JENKINS\workspace\Pipe@tmp\secretFiles\e0ab232f-1958-42d1-b3bb-aed5e00a562f\server.key'
[Pipeline] echo
========== SCRATCH ORG COMMAND FAILURE: 1
当我已经 运行 withCredentials 成功时,为什么作业还要查找 server.key 文件?我在这里错过了什么?
如有任何见解,我们将不胜感激。
好的..这个让我困惑了一段时间,但我终于得到了创建临时组织的脚本。
我通过远程桌面连接登录到 Jenkins 虚拟服务器,打开 windows 资源管理器,导航到 Jenkins User .sfdx 文件夹并删除了以下文件:
alias.json
key.json
user@domain.json
stash.json
在我这样做之后,我在 Jenkinsfile 中做了一些更新并将更改推送到存储库。工作 运行,并创建了 Scratch Org。
我的新问题是试图弄清楚如何再次拥有相同的工作 运行,因为我们将有多个回购协议处理这个单一的工作。
无论如何,我希望这对面临同样问题的你们中的一些人有所帮助。
我正在尝试使用 Jenkins 在 BitBucket 和 Salesforce 之间创建持续集成,但我在创建 Scratch Org 时遇到了问题。我认为 Jenkinsfile 设置正确。这是:
node {
def SF_JENKINSUSER = env.SF_JENKINS_USER
def SF_USERNAME = env.SF_JENKINS_USER + '.' + env.SF_DEV
def SF_URL = env.SF_TESTURL
def SF_PROD = env.SF_PRODURL
def SF_DEV_HUB = env.SF_DEVHUB
stage('Checkout Source') {
checkout scm
}
withEnv(["HOME=${env.WORKSPACE}"]) {
withCredentials([string(credentialsId: 'SF_CONSUMER_KEY_BIND', variable: 'SF_CONSUMER_KEY'), file(credentialsId: 'SERVER_KEY_CREDENTALS_ID', variable: 'server_key_file')]) {
stage('Authorize DevHub Org') {
try {
rc = command "sfdx force:auth:jwt:grant -r ${SF_PROD} -i ${SF_CONSUMER_KEY} -u ${SF_JENKINSUSER} -f ${server_key_file} --setdefaultdevhubusername -a ${SF_DEV_HUB}"
if ( rc != 0 ) {
echo '========== ERROR: ' + rc
error 'Salesforce org authorization failed.'
}
else {
command "sfdx force:org:list"
echo '========== LOGGED IN =========='
}
}
catch (err) {
echo "========== DEVHUB AUTHORIZATION FAILURE: ${err} =========="
}
}
// Create a new scratch org to test the repo
stage('Create Test Scratch Org') {
try {
rc = command "sfdx force:org:create -s -f config\project-scratch-def.json -a TestScratch -w 10 -d 1"
if (rc != 0) {
error 'Salesforce test scratch org creation failed.'
}
}
catch (err) {
echo "========== SCRATCH ORG CREATION FAILURE: ${err} =========="
}
}
}
} }
def command(script) {
if ( isUnix() ) {
return sh(returnStatus: true, script: script);
}
else {
return bat(returnStatus: true, script: script);
}
对这里的格式表示歉意。现在,我无法弄清楚结果。它说组织的连接状态是 JwtGrantFailure 并且它正在寻找 server.key 文件而不是命令行中的临时 json 文件。以下是此作业输出的相关部分:
E:\DevOps_Root\JENKINS\workspace\TestingCIPipeline2>sfdx force:org:list
=== Orgs
ALIAS USERNAME ORG ID CONNECTED STATUS
(D) DevHub sa.jenkins@[...].com 00D300000000UicEAE JwtGrantError
No active scratch orgs found. Specify --all to see all scratch orgs
[Pipeline] echo
========== LOGGED IN ==========
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Create Test Scratch Org)
[Pipeline] isUnix
[Pipeline] bat
E:\DevOps_Root\JENKINS\workspace\TestingCIPipeline2>sfdx force:org:create -s -f config\project-scratch-def.json -a TestScratch -w 10 -d 1
ERROR running force:org:create: ENOENT: no such file or directory, open
'E:\DevOps_Root\JENKINS\workspace\Pipe@tmp\secretFiles\e0ab232f-1958-42d1-b3bb-aed5e00a562f\server.key'
[Pipeline] echo
========== SCRATCH ORG COMMAND FAILURE: 1
当我已经 运行 withCredentials 成功时,为什么作业还要查找 server.key 文件?我在这里错过了什么?
如有任何见解,我们将不胜感激。
好的..这个让我困惑了一段时间,但我终于得到了创建临时组织的脚本。
我通过远程桌面连接登录到 Jenkins 虚拟服务器,打开 windows 资源管理器,导航到 Jenkins User .sfdx 文件夹并删除了以下文件:
alias.json
key.json
user@domain.json
stash.json
在我这样做之后,我在 Jenkinsfile 中做了一些更新并将更改推送到存储库。工作 运行,并创建了 Scratch Org。
我的新问题是试图弄清楚如何再次拥有相同的工作 运行,因为我们将有多个回购协议处理这个单一的工作。
无论如何,我希望这对面临同样问题的你们中的一些人有所帮助。