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. Runsfdx 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
- bash:
-
Create a
deploy-metadata.yaml
in your root specifying entries you would normally put inpackage.xml
. example -
Run the following from the root of your repo
npx mdapi-smart-deploy
-
Before promoting changes from your sandbox (to prod for example), remember to modify your
src/package.xml
to include your changes (--only-gen-package-xml
can help generate the additions you need to make).
Example
Please see the examples directory
Options
--src-dir
: specify the directory your metata files (code) lives. Relative to the root of your git repo. Defaults tosrc
.--only-gen-package-xml
: will ONLY generate and printpackage.xml
contents tostdout
. Will not invokemdapi:deploy
--verbose
: for debugging the tool
Known issues
Big one is, only a few metadata types are supported today. See this issue