#continuous-integration #jenkins-pipeline #salesforce #bitbucket
Вопрос:
Я пытаюсь создать непрерывную интеграцию между BitBucket и Salesforce с помощью Дженкинса, и у меня возникли проблемы с созданием Scratch Org. Файл Дженкинса, который Я СЧИТАЮ, настроен правильно. Вот он:
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_RootJENKINSworkspaceTestingCIPipeline2gt;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_RootJENKINSworkspaceTestingCIPipeline2gt;sfdx force:org:create -s -f configproject-scratch-def.json -a TestScratch -w 10 -d 1 ERROR running force:org:create: ENOENT: no such file or directory, open 'E:DevOps_RootJENKINSworkspacePipe@tmpsecretFilese0ab232f-1958-42d1-b3bb-aed5e00a562fserver.key' [Pipeline] echo ========== SCRATCH ORG COMMAND FAILURE: 1
Зачем заданию искать файл server.key, если я уже успешно запустил withCredentials? Что я здесь упускаю?
Любые идеи будут высоко оценены.
Ответ №1:
Хорошо, так что … это на какое-то время сбило меня с толку, но я, наконец, получил сценарий для создания новой организации.
Я вошел на виртуальный сервер Дженкинса через подключение к удаленному рабочему столу, открыл проводник Windows, перешел в папку Jenkins User .sfdx и удалил следующие файлы:
alias.json key.json user@domain.json stash.json
После этого я внес некоторые обновления в файл Дженкинса и перенес изменения в репозиторий. Задание было выполнено, и была создана Новая организация.
Моя новая проблема заключается в том, чтобы попытаться выяснить, как снова запустить одно и то же задание, потому что у нас будет несколько репозиториев, работающих над одним заданием.
В любом случае, я надеюсь, что это поможет некоторым из вас, кто сталкивается с той же проблемой.