mdapi-smart-deploy
Salesforce meta-data API smart deploy to sandboxes (don't use this for production)
About
mdapi:deploy
requires that all the code on your filesystem at the time of deploy, be defined in package.xml
. See details here.
I wanted to track all my sfdc in one repo, and be able to only deploy the metadata files that I'm working on at the moment, via the sfdx mdapi:deploy CLI command. mdapi-smart-deploy
to the rescue..
Overview
In a deploy-metadata.yaml
specify what you want to deploy, and mdapi-smart-deploy
will:
- Create a zip file containing a dynamically generated
package.xml
, with only the files you want to deploy. - Invokes
sfdx force:mdapi:deploy
against your sandbox. - Checks status of the deploy and reports errors
Usage
-
Make sure the root of your git repo has a src
dir (containing your SFDC source). src/package.xml
can exist, it will be ignored.
-
Set the enviornment var SFDC_SANDBOX_USERNAME
to your sandbox username. Run sfdx force:org:list
to view your usernames.
- bash:
export SFDC_SANDBOX_USERNAME=blah@youruser.blah
- fish shell:
set -x SFDC_SANDBOX_USERNAME blah@youruser.blah
-
Create a deploy-metadata.yaml
in your root specifying entries you would normally put in package.xml
. example
-
Run the following from the root of your repo
npx mdapi-smart-deploy
-
Before promoting changes from your sandbox, remember to modify your src/package.xml
to include your changes (--only-gen-package-xml
can help generate the additions you need to make).