I want to set up a CI/CD pipeline for my org to make it easier for me to develop and deploy changes to APEX and other code-based customizations in my org. I'm following this link from SalesforceBen.com as a guide to set this up using GitHub Actions. I've reached the point where I am customizing my package.xml
file to decide what metadata I want to download to my machine so I can then upload it to GitHub.
My question is - is there any metadata that I should specifically exclude from the package.xml
file when pulling down the metadata from my org?
Ideally, I would like to have my entire org (including settings, security information, etc) inside my sandbox org so that when I complete pull requests and run my CI/CD tools, I can have a delta of everything that has changed and push it to production automatically, without having to make any manual changes in production after the fact to reach parity with the changes in the sandbox.
However, the article I'm following mentioned that that may not be wise because some metadata information is not statically defined, and so can have different XML even though the actual configuration has not changed. The article specifically mentions profile data as an example of this, but doesn't give an explicit list of what other metadata objects should be specifically excluded, if any.
If anyone could give me a list of specific objects that I should consider blacklisting from GitHub/the CI/CD process, along with a brief reason why, I would appreciate it. (Or if it is perfectly fine to include everything in the CD process, having confirmation of that from some other experienced Salesforce devs would be awesome.)
(I did discover an answer from @sfdcfox here which implies that at least in his organization, they captured all of the metadata in test/dev sandboxes, so maybe this is okay. I would still like some confirmation on this though before I start overwriting Production with complete metadata.)
Thanks in advance.