Skip to content

hardis:source:deploy

Description

sfdx-hardis wrapper for sfdx force:source:deploy that displays tips to solve deployment errors.

Additional to the base command wrapper: If using --checkonly, add options --checkcoverage and --coverageformatters json-summary to check that org coverage is > 75% (or value defined in .sfdx-hardis.yml property apexTestsMinCoverageOrgWide)

Deployment results

You can also have deployment results as pull request comments, on:

Assisted solving of Salesforce deployments errors

Deployment pre or post commands

You can define command lines to run before or after a deployment, with parameters:

  • id: Unique Id for the command
  • label: Human readable label for the command
  • skipIfError: If defined to "true", the post-command won't be run if there is a deployment failure
  • context: Defines the context where the command will be run. Can be all (default), check-deployment-only or process-deployment-only
  • runOnlyOnceByOrg: If set to true, the command will be run only one time per org. A record of SfdxHardisTrace__c is stored to make that possible (it needs to be existing in target org)

If the commands are not the same depending on the target org, you can define them into config/branches/.sfdx-hardis-BRANCHNAME.yml instead of root config/.sfdx-hardis.yml

Example:

commandsPreDeploy:
  - id: knowledgeUnassign
    label: Remove KnowledgeUser right to the user who has it
    command: sf data update record --sobject User --where "UserPermissionsKnowledgeUser='true'" --values "UserPermissionsKnowledgeUser='false'" --json
  - id: knowledgeAssign
    label: Assign Knowledge user to the deployment user
    command: sf data update record --sobject User --where "Username='deploy.github@myclient.com'" --values "UserPermissionsKnowledgeUser='true'" --json

commandsPostDeploy:
  - id: knowledgeUnassign
    label: Remove KnowledgeUser right to the user who has it
    command: sf data update record --sobject User --where "UserPermissionsKnowledgeUser='true'" --values "UserPermissionsKnowledgeUser='false'" --json
  - id: knowledgeAssign
    label: Assign Knowledge user to desired username
    command: sf data update record --sobject User --where "Username='admin-yser@myclient.com'" --values "UserPermissionsKnowledgeUser='true'" --json
  - id: someActionToRunJustOneTime
    label: And to run only if deployment is success
    command: sf sfdmu:run ...
    skipIfError: true
    context: process-deployment-only
    runOnlyOnceByOrg: true

Notes:

  • You can disable coloring of errors in red by defining env variable SFDX_HARDIS_DEPLOY_ERR_COLORS=false

See documentation of Salesforce command

Parameters

Name Type Description Default Required Options
checkcoverage boolean Check Apex org coverage
checkonly
-c
boolean checkonly
coverageformatters option coverageformatters
debug boolean debug
flags-dir option undefined
forceoverwrite
-f
boolean forceoverwrite
ignoreerrors boolean ignoreErrors
ignorewarnings
-g
boolean ignoreWarnings
json boolean Format output as json.
junit boolean junit
manifest
-x
option flagsLong.manifest
metadata
-m
option metadata
postdestructivechanges option postdestructivechanges
predestructivechanges option predestructivechanges
resultsdir option resultsdir
runtests
-r
option runTests
soapdeploy boolean soapDeploy
sourcepath
-p
option sourcePath
target-org
-o
option undefined
testlevel
-l
option testlevel NoTestRun NoTestRun
RunSpecifiedTests
RunLocalTests
RunAllTestsInOrg
tracksource
-t
boolean tracksource
validateddeployrequestid
-q
option validateDeployRequestId
verbose boolean verbose
wait
-w
option wait 60
websocket option websocket

Examples

$ sf hardis:source:deploy -x manifest/package.xml --wait 60 --ignorewarnings --testlevel RunLocalTests --postdestructivechanges ./manifest/destructiveChanges.xml --target-org nicolas.vuillamy@cloudity.com.sfdxhardis --checkonly --checkcoverage --verbose --coverageformatters json-summary