Summary
force:apex:test:run command fails when using JWT connection and the jwtkeyfile file is missing from project folder
Steps To Reproduce:
- Have jwtKeyFile at project root
- Authenticate to Dev Hub via JWT auth and make it defaultDevHub at least within the context of current SFDX project.
- Execute a scratch org creation
force:org:create --definitionfile config/project-scratch-def.json --json --setdefaultusername --durationdays 1
- Push of source code
force:source:push --json
- executes correctly
- Conduct an Apex Test run
force:apex:test:run --testlevel RunLocalTests --outputdir target --resultformat tap --json
- executes correctly
- remove jwtKeyFile from project directory
- Push of source code
force:source:push --json
- executes correctly
- Conduct an Apex Test run
force:apex:test:run --testlevel RunLocalTests --outputdir target --resultformat tap --json
- execution fails
Expected result
Execution of force:apex:test:run should succeed regardless of the presence of the jwtKeyFile
Actual result
Execution of force:apex:test:run fails if jwtKeyFile is not present in project directory.
Additional information
This becomes a blocker in Jenkins CI processes on SFDX projects. The recommended way to manage the jwtKeyFile on Jenkins is store it in the "Jenkins Admin Credentials interface." During build job execution, Jenkins will checkout all code to the build job's "workspace" folder. It will download the the jetKeyFile and other secret files to the adjacent folder "workspace@tmp" and inject that file during commands that explicitly utilize it (like the force:auth:jwt:grant command).
As it stands now, I am unable to utilize force:apex:test:run as part of my CI process.
SFDX CLI Version(to find the version of the CLI engine run sfdx --version):
- sfdx-cli/7.4.0-99233fd3af darwin-x64 node-v10.15.3
SFDX plugin Version(to find the version of the CLI plugin run sfdx plugins --core)
- @oclif/plugin-commands 1.2.2 (core)
- @oclif/plugin-help 2.1.6 (core)
- @oclif/plugin-not-found 1.2.2 (core)
- @oclif/plugin-plugins 1.7.8 (core)
- @oclif/plugin-update 1.3.9 (core)
- @oclif/plugin-warn-if-update-available 1.7.0 (core)
- @oclif/plugin-which 1.0.3 (core)
- @salesforce/sfdx-trust 3.0.2 (core)
- analytics 1.1.2 (core)
- generator 1.1.0 (core)
- salesforcedx 45.11.0 (core)
- force-language-services 45.10.0 (core)
- salesforce-alm 45.14.0 (core)
- sfdx-cli 7.4.0 (core)
OS and version:
- MacOS v10.14.4
- Ubuntu Linux (amd64) latest version
Summary
force:apex:test:run command fails when using JWT connection and the jwtkeyfile file is missing from project folder
Steps To Reproduce:
force:org:create --definitionfile config/project-scratch-def.json --json --setdefaultusername --durationdays 1force:source:push --jsonforce:apex:test:run --testlevel RunLocalTests --outputdir target --resultformat tap --jsonforce:source:push --jsonforce:apex:test:run --testlevel RunLocalTests --outputdir target --resultformat tap --jsonExpected result
Execution of
force:apex:test:runshould succeed regardless of the presence of the jwtKeyFileActual result
Execution of
force:apex:test:runfails if jwtKeyFile is not present in project directory.Additional information
This becomes a blocker in Jenkins CI processes on SFDX projects. The recommended way to manage the jwtKeyFile on Jenkins is store it in the "Jenkins Admin Credentials interface." During build job execution, Jenkins will checkout all code to the build job's "workspace" folder. It will download the the jetKeyFile and other secret files to the adjacent folder "workspace@tmp" and inject that file during commands that explicitly utilize it (like the
force:auth:jwt:grantcommand).As it stands now, I am unable to utilize
force:apex:test:runas part of my CI process.SFDX CLI Version(to find the version of the CLI engine run sfdx --version):
SFDX plugin Version(to find the version of the CLI plugin run sfdx plugins --core)
OS and version: