{"id":3314,"date":"2021-12-14T17:03:37","date_gmt":"2021-12-14T16:03:37","guid":{"rendered":"https:\/\/texei.com\/?p=3314"},"modified":"2023-08-17T15:51:58","modified_gmt":"2023-08-17T13:51:58","slug":"day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions","status":"publish","type":"post","link":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/","title":{"rendered":"Day 13 : CI\/CD Salesforce deploys only delta with github actions"},"content":{"rendered":"\r\n<p>Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven&#8217;t been changed.<\/p>\r\n<p>When you are on a small project, you don&#8217;t have a problem deploying all the metadata every time and it doesn&#8217;t take a lot of time. But on large projects, deploying all metadata can take a long time.<\/p>\r\n<p>From there comes the idea to be able to deploy only the modified metadata and this is what I will show you in this article.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Branching strategy<\/h2>\r\n\r\n\r\n\r\n<p>There is a sample of git flow<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter is-resized\"><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-5388 size-full\" src=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe.png\" alt=\"a sample of git flow\" width=\"1080\" height=\"1080\" srcset=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-66x66.png 66w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-150x150.png 150w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-200x200.png 200w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-300x300.png 300w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-400x400.png 400w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-600x600.png 600w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-768x768.png 768w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-800x800.png 800w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe-1024x1024.png 1024w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Votre-texte-de-paragraphe.png 1080w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>In my case, I have a git branch for every environnement and a feature branch for every user story. When I want to deploy my feature in the higher environment, I create a pull request to push my feature branch in the destination environment branch. When I create a pull request I want to validate my deployment before merging the pull request.<\/p>\r\n\r\n\r\n\r\n<p>If you want to deploy a set of a user stories, you can use a promotion branch :<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Create a promotion branch from the destination branch with the name <strong>promotion\/destinationbranch-XXXX<\/strong><\/li>\r\n<li>Merge all feature branches you want to deploy with the promotion branch<\/li>\r\n<li>Create a pull request to push the promotion branch to the destination branch.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Implementation<\/h2>\r\n\r\n\r\n\r\n<h3>Before starting, you must to do this step :<\/h3>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Configure authentication.<\/li>\r\n<li>Create Global Variable on github repo (SF_USERNAME, SF_CONSUMER_KEY and SERVER_KEY_PASSWORD)<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>You can see this article to configure authentication with JWT<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/developer.salesforce.com\/docs\/atlas.en-us.sfdx_dev.meta\/sfdx_dev\/sfdx_dev_auth_jwt_flow.htm\">https:\/\/developer.salesforce.com\/docs\/atlas.en-us.sfdx_dev.meta\/sfdx_dev\/sfdx_dev_auth_jwt_flow.htm<\/a><\/p>\r\n\r\n\r\n\r\n<p>For the implementation I use<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Github actions<\/strong><\/li>\r\n<li><strong>SFDX<\/strong><\/li>\r\n<li><strong>Plugin SFDX Git Delta<\/strong><\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h3>Here is an example of YAML to validate your package during a pull request to an environment branch :<\/h3>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code has-small-font-size\"><code>name: PROD-Validation\r\n\r\n# Controls when the action will run.\r\non:\r\n  # Triggers the workflow on push or pull request events but only for the master branch\r\n  pull_request:\r\n    branches: [ master ]\r\n\r\njobs:\r\n  build:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n    - uses: actions\/checkout@v2\r\n      with:\r\n          ref: ${{ github.event.pull_request.head.sha }}\r\n          # Fetch all history commit\r\n          fetch-depth: 0\r\n    - uses: actions\/setup-node@v1\r\n      with:\r\n        node-version: '14.6.0'\r\n\r\n    - name: Install SFDX &amp; SFDX Git Delta\r\n      run: |\r\n        npm install sfdx-cli\r\n        echo y | node_modules\/sfdx-cli\/bin\/run plugins:install sfdx-git-delta\r\n    - name: Generate package.xml\r\n      run: |\r\n        #Generate package.xml between the current branch &amp; \r\n        node_modules\/sfdx-cli\/bin\/run sgd:source:delta --to \"HEAD\" --from $(git merge-base HEAD origin\/master) --output . -i .gitignore\r\n        echo \"--- package.xml generated with added and modified metadata ---\"\r\n        cat package\/package.xml\r\n    - name: Authentication to PROD\r\n      run: |\r\n        echo \"${SERVER_KEY_PASSWORD}\" &gt; server.key\r\n        node_modules\/sfdx-cli\/bin\/run auth:jwt:grant --clientid ${{ secrets.SF_CONSUMER_KEY }} --jwtkeyfile server.key --username ${{ secrets.SF_USERNAME }} --setdefaultdevhubusername --setalias prod\r\n      env:\r\n        SERVER_KEY_PASSWORD: ${{ secrets.SERVER_KEY_PASSWORD }}\r\n\r\n    - name: Validation in PROD\r\n      run: |\r\n        node_modules\/sfdx-cli\/bin\/run force:source:deploy -x package\/package.xml -l RunLocalTests -u prod -c<\/code><\/pre>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h3>Example of a Yaml to deploy to the environment after you merge the pull request :<\/h3>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code has-small-font-size\"><code>name: PROD-Deployment\r\n\r\n# Controls when the action will run. \r\non:\r\n  # Triggers the workflow on push or pull request events but only for the master branch\r\n  push:\r\n    branches: [ master ]\r\n\r\njobs:\r\n  build:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n    - uses: actions\/checkout@v2\r\n      with:\r\n        ref: master\r\n        # Fetch all history commit\r\n        fetch-depth: 0\r\n    - uses: actions\/setup-node@v1\r\n      with:\r\n        node-version: '14.6.0'\r\n\r\n    - name: Install SFDX &amp; SFDX Git Delta\r\n      run: |\r\n        npm install sfdx-cli\r\n        echo y | node_modules\/sfdx-cli\/bin\/run plugins:install sfdx-git-delta\r\n\r\n    - name: Generate package.xml\r\n      run: |\r\n        #Generate package.xml between the current branch &amp; \r\n        node_modules\/sfdx-cli\/bin\/run sgd:source:delta --to \"HEAD\" --from \"HEAD^\" --output .\r\n        echo \"--- package.xml generated with added and modified metadata ---\"\r\n        cat package\/package.xml\r\n\r\n    - name: Authentication to Production\r\n      run: |\r\n        echo \"${SERVER_KEY_PASSWORD}\" &gt; server.key\r\n        node_modules\/sfdx-cli\/bin\/run auth:jwt:grant --clientid ${{ secrets.SF_CONSUMER_KEY }} --jwtkeyfile server.key --username ${{ secrets.SF_USERNAME }} --setdefaultdevhubusername --setalias prod\r\n      env:\r\n        SERVER_KEY_PASSWORD: ${{ secrets.SERVER_KEY_PASSWORD }}\r\n\r\n    - name: Deployement to PROD\r\n      run: |\r\n        node_modules\/sfdx-cli\/bin\/run force:source:deploy -x package\/package.xml -l RunLocalTests -u prod\r\n<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">\u00a0<\/h2>\r\n<h2><strong>Demo<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>For instance, I have a project where I already have existing metadata.<\/p>\r\n<p>First I create a feature branch from the master branch that&#8217;s the name is <strong>feature\/JIRA-00001<\/strong> and then I edit a field on this feature branch.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" class=\"alignnone wp-image-3310\" src=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-1024x404.png\" alt=\"creation of a feature branch\" width=\"1024\" height=\"404\" srcset=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-200x79.png 200w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-300x118.png 300w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-400x158.png 400w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-600x237.png 600w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-768x303.png 768w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-800x316.png 800w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-1024x404.png 1024w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-1200x473.png 1200w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-16.12.10-1536x606.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>I create a pull request and you can see the check as below.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" class=\"alignnone wp-image-3311\" src=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21.png\" alt=\"creation of a pull request\" width=\"912\" height=\"305\" srcset=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21-200x67.png 200w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21-300x100.png 300w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21-400x134.png 400w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21-600x201.png 600w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21-768x257.png 768w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21-800x268.png 800w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-14.28.21.png 912w\" sizes=\"(max-width: 912px) 100vw, 912px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>You can also see the generated package.xml<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3312\" src=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45.png\" alt=\"Generate package.xml\" width=\"1017\" height=\"564\" srcset=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45-200x111.png 200w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45-300x166.png 300w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45-400x222.png 400w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45-600x333.png 600w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45-768x426.png 768w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45-800x444.png 800w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-26-a\u0300-17.08.45.png 1017w\" sizes=\"(max-width: 1017px) 100vw, 1017px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>All checks are okay, now you can merge your pull request.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3313\" src=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56.png\" alt=\"All checks are okay &amp; merge your pull request\" width=\"932\" height=\"275\" srcset=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56-200x59.png 200w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56-300x89.png 300w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56-400x118.png 400w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56-600x177.png 600w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56-768x227.png 768w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56-800x236.png 800w, https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/Capture-de\u0301cran-2021-11-18-a\u0300-17.49.56.png 932w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>Now you have a nice gift from Santa Claus ! &#x1f385;<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">More<\/h2>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/github.com\/scolladon\/sfdx-git-delta\">https:\/\/github.com\/scolladon\/sfdx-git-delta<\/a><\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/docs.github.com\/en\/actions\">https:\/\/docs.github.com\/en\/actions<\/a><\/p>\r\n<p>The French version of this article is available here :<\/p>\r\n<p><a href=\"https:\/\/texei.com\/conseils\/salesforce-ci-cd-comment-deployer-uniquement-le-delta-avec-les-github-actions\/\">Salesforce CI\/CD : Comment d\u00e9ployer uniquement le delta avec les Github actions ?<\/a><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven&#8217;t been changed. When you are on a small project, you don&#8217;t have a problem deploying all the metadata every time and it doesn&#8217;t take a lot of time. But on large projects, deploying all metadata can take [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":3610,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[300],"tags":[310],"class_list":["post-3314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-advices","tag-salesforce-en"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Day 13 : CI\/CD Salesforce deploys only delta with github actions - Texe\u00ef<\/title>\n<meta name=\"description\" content=\"Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven&#039;t been changed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Day 13 : CI\/CD Salesforce deploys only delta with github actions\" \/>\n<meta property=\"og:description\" content=\"Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven&#039;t been changed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/\" \/>\n<meta property=\"og:site_name\" content=\"Texe\u00ef\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-14T16:03:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-17T13:51:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/wrapped-up-2018-600.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Mouloud Habchi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/\"},\"author\":{\"name\":\"Mouloud Habchi\",\"@id\":\"https:\\\/\\\/texei.com\\\/#\\\/schema\\\/person\\\/baae6aaf03233cc89a42d997c5ddedaa\"},\"headline\":\"Day 13 : CI\\\/CD Salesforce deploys only delta with github actions\",\"datePublished\":\"2021-12-14T16:03:37+00:00\",\"dateModified\":\"2023-08-17T13:51:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/\"},\"wordCount\":440,\"publisher\":{\"@id\":\"https:\\\/\\\/texei.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/wrapped-up-2018-600.gif\",\"keywords\":[\"Salesforce\"],\"articleSection\":[\"Advices\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/\",\"url\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/\",\"name\":\"Day 13 : CI\\\/CD Salesforce deploys only delta with github actions - Texe\u00ef\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/texei.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/wrapped-up-2018-600.gif\",\"datePublished\":\"2021-12-14T16:03:37+00:00\",\"dateModified\":\"2023-08-17T13:51:58+00:00\",\"description\":\"Most projects today configure the CI\\\/CD to deploy all metadata from the git repository, even those that haven't been changed.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/wrapped-up-2018-600.gif\",\"contentUrl\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/wrapped-up-2018-600.gif\",\"width\":600,\"height\":400,\"caption\":\"Wrapped up gifts\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/texei.com\\\/en\\\/advices\\\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/texei.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advices\",\"item\":\"https:\\\/\\\/texei.com\\\/en\\\/category\\\/advices\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Day 13 : CI\\\/CD Salesforce deploys only delta with github actions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/texei.com\\\/#website\",\"url\":\"https:\\\/\\\/texei.com\\\/\",\"name\":\"Texe\u00ef\",\"description\":\"Turn your IT into Business\",\"publisher\":{\"@id\":\"https:\\\/\\\/texei.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/texei.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/texei.com\\\/#organization\",\"name\":\"Texe\u00ef\",\"url\":\"https:\\\/\\\/texei.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/texei.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/logo-essai-1.jpg\",\"contentUrl\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/logo-essai-1.jpg\",\"width\":2560,\"height\":1102,\"caption\":\"Texe\u00ef\"},\"image\":{\"@id\":\"https:\\\/\\\/texei.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/texei.com\\\/#\\\/schema\\\/person\\\/baae6aaf03233cc89a42d997c5ddedaa\",\"name\":\"Mouloud Habchi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Mouloud-96x96.png\",\"url\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Mouloud-96x96.png\",\"contentUrl\":\"https:\\\/\\\/texei.com\\\/dev\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Mouloud-96x96.png\",\"caption\":\"Mouloud Habchi\"},\"url\":\"https:\\\/\\\/texei.com\\\/en\\\/author\\\/mouloud\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Day 13 : CI\/CD Salesforce deploys only delta with github actions - Texe\u00ef","description":"Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven't been changed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/","og_locale":"en_US","og_type":"article","og_title":"Day 13 : CI\/CD Salesforce deploys only delta with github actions","og_description":"Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven't been changed.","og_url":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/","og_site_name":"Texe\u00ef","article_published_time":"2021-12-14T16:03:37+00:00","article_modified_time":"2023-08-17T13:51:58+00:00","og_image":[{"width":600,"height":400,"url":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/wrapped-up-2018-600.gif","type":"image\/gif"}],"author":"Mouloud Habchi","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#article","isPartOf":{"@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/"},"author":{"name":"Mouloud Habchi","@id":"https:\/\/texei.com\/#\/schema\/person\/baae6aaf03233cc89a42d997c5ddedaa"},"headline":"Day 13 : CI\/CD Salesforce deploys only delta with github actions","datePublished":"2021-12-14T16:03:37+00:00","dateModified":"2023-08-17T13:51:58+00:00","mainEntityOfPage":{"@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/"},"wordCount":440,"publisher":{"@id":"https:\/\/texei.com\/#organization"},"image":{"@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/wrapped-up-2018-600.gif","keywords":["Salesforce"],"articleSection":["Advices"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/","url":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/","name":"Day 13 : CI\/CD Salesforce deploys only delta with github actions - Texe\u00ef","isPartOf":{"@id":"https:\/\/texei.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#primaryimage"},"image":{"@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/wrapped-up-2018-600.gif","datePublished":"2021-12-14T16:03:37+00:00","dateModified":"2023-08-17T13:51:58+00:00","description":"Most projects today configure the CI\/CD to deploy all metadata from the git repository, even those that haven't been changed.","breadcrumb":{"@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#primaryimage","url":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/wrapped-up-2018-600.gif","contentUrl":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/12\/wrapped-up-2018-600.gif","width":600,"height":400,"caption":"Wrapped up gifts"},{"@type":"BreadcrumbList","@id":"https:\/\/texei.com\/en\/advices\/day-13-ci-cd-salesforce-deploys-only-delta-with-github-actions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/texei.com\/"},{"@type":"ListItem","position":2,"name":"Advices","item":"https:\/\/texei.com\/en\/category\/advices\/"},{"@type":"ListItem","position":3,"name":"Day 13 : CI\/CD Salesforce deploys only delta with github actions"}]},{"@type":"WebSite","@id":"https:\/\/texei.com\/#website","url":"https:\/\/texei.com\/","name":"Texe\u00ef","description":"Turn your IT into Business","publisher":{"@id":"https:\/\/texei.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/texei.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/texei.com\/#organization","name":"Texe\u00ef","url":"https:\/\/texei.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/texei.com\/#\/schema\/logo\/image\/","url":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/03\/logo-essai-1.jpg","contentUrl":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2021\/03\/logo-essai-1.jpg","width":2560,"height":1102,"caption":"Texe\u00ef"},"image":{"@id":"https:\/\/texei.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/texei.com\/#\/schema\/person\/baae6aaf03233cc89a42d997c5ddedaa","name":"Mouloud Habchi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2026\/03\/Mouloud-96x96.png","url":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2026\/03\/Mouloud-96x96.png","contentUrl":"https:\/\/texei.com\/dev\/wp-content\/uploads\/2026\/03\/Mouloud-96x96.png","caption":"Mouloud Habchi"},"url":"https:\/\/texei.com\/en\/author\/mouloud\/"}]}},"_links":{"self":[{"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/posts\/3314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/comments?post=3314"}],"version-history":[{"count":0,"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/posts\/3314\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/media\/3610"}],"wp:attachment":[{"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/media?parent=3314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/categories?post=3314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/texei.com\/en\/wp-json\/wp\/v2\/tags?post=3314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}