{"id":22181576,"url":"https://github.com/gfarb/salesforce-actions-demo","last_synced_at":"2026-03-19T22:03:07.122Z","repository":{"id":118548386,"uuid":"537177892","full_name":"gfarb/salesforce-actions-demo","owner":"gfarb","description":"Demo of the GitHub Actions platform to improve Salesforce CI/CD pipeline. Used at Dreamforce 2022 by @gfarb.","archived":false,"fork":false,"pushed_at":"2022-09-22T00:01:17.000Z","size":7787,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-29T23:42:41.204Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Apex","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gfarb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-15T19:29:01.000Z","updated_at":"2023-06-29T14:51:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"38b5e4b8-a719-486d-a75d-21deaacdb555","html_url":"https://github.com/gfarb/salesforce-actions-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfarb%2Fsalesforce-actions-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfarb%2Fsalesforce-actions-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfarb%2Fsalesforce-actions-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfarb%2Fsalesforce-actions-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gfarb","download_url":"https://codeload.github.com/gfarb/salesforce-actions-demo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245334908,"owners_count":20598389,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-02T09:41:03.259Z","updated_at":"2026-01-05T19:05:28.630Z","avatar_url":"https://github.com/gfarb.png","language":"Apex","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :cloud: GitHub Actions Demo for Salesforce Projects :cloud:\n\n\u003cdiv align=\"center\"\u003e\n   \u003cimg width=750 src=\"https://user-images.githubusercontent.com/22826414/190887130-5c8638d1-d5c1-4579-8164-717216c09661.png\"\u003e\n\u003c/div\u003e\n\u003c/br\u003e\n\nThis repository was created to demo how the GitHub Actions platform can be leveraged to improve Salesforce CI/CD pipelines resulting in superior developer and user experiences while saving time and resources. :octocat:\n\nThe demo was presented by [gfarb](https://github.com/gfarb) for the 20th anniversary of Dreamforce (2022). The [slide deck](/demo-files/GitHub%20Actions%20Dreamforce%20'22%20Deck.pdf) contains information on Continuous Integration, Continuous Delivery, Continuous Deployment, GitHub Workflows and GitHub Actions as well as additional relevant information pertaining to the demo and this repository.\n\n## Configuration\n\n1. Fork this repository.\n1. [Create a Developer Experience org](https://developer.salesforce.com/signup) if you do not have one readily available.\n1. [Set up `sfdx`](https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_install_cli.htm) if it's not already configured globally on your device.\n1. [Create a private key and self-signed digital certificate](https://developer.salesforce.com/docs/atlas.en-us.210.0.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_key_and_cert.htm) for JWT auth flow.\n1. [Create a new connected app](https://developer.salesforce.com/docs/atlas.en-us.210.0.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_connected_app.htm) for the JWT auth flow and make sure you are pre-authorized.\n1. In your forked repository on GitHub, configure the following [GitHub Action secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#about-encrypted-secrets) in the Settings tab:\n   1. `SFDX_USERNAME`: stores the Salesforce username used for `sfdx` commands\n   1. `SFDX_CLIENT_ID`: stores the client id for the connected app you created\n   1. `SFDX_JWT_KEY`: stores the private key you generated for JWT auth flow\n1. Locally check out your forked repository and in the project's root directory:\n   1. Run `npm install`\n   1. Using `sfdx` authorize your Developer Experience org and set your default username\n\n## Example Workflow\n\nWithin this repository there is a single GitHub Workflow pre-configured to automate the Salesforce build, test and deploy process. The `Deploy to Salesforce` workflow ([`on-push-to-main`](/demo-files/workflows/on-push-to-main.yml)) will do the following when you push to the default branch:\n\n1. Check out your forked repository.\n1. Set up Node.\n1. Cache Node modules and install dependencies if necessary.\n1. Authenticate your target Salesforce org using the JWT flow.\n1. Use [`Salesforce Deploy Action`](https://github.com/marketplace/actions/salesforce-deploy-action) to create a manifest from your source files by running the `force:source:convert` command, and execute the `force:source:deploy` command to test in and deploy to your target environment.\n1. If destructive changes are present the contents within the `destructive-changes` directory will be removed and the changes will be committed using the public [`Git Auto Commit`](https://github.com/marketplace/actions/git-auto-commit) GitHub Action.\n\n## Demo Recordings\n\n###### You can reset the demo by running `scripts/demo/reset-demo` locally in your forked repository's root directory.\n\n#### Initial Deploy w/ Destructive Change\n\nhttps://user-images.githubusercontent.com/22826414/190487760-5f96005c-24e0-4bb8-83fb-915f372652b6.mp4\n\n#### Identifying CI/CD Bug\n\nhttps://user-images.githubusercontent.com/22826414/190488377-8fc4fb14-4307-4cab-b2c6-ab2214c39852.mp4\n\n#### Fixing CI/CD Bug\n\nhttps://user-images.githubusercontent.com/22826414/190488505-7e2446af-babf-49ed-aac9-e3fd08fd9335.mp4\n\n## Resources\n\n- [Continuous Integration, Continuous Delivery \u0026 Continuous Deployment](https://resources.github.com/ci-cd/)\n- [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions)\n- [GitHub Workflows](https://docs.github.com/en/actions/using-workflows/about-workflows)\n- [Salesforce Deploy Action](https://github.com/marketplace/actions/salesforce-deploy-action)\n- [GitHub Actions Marketplace](https://github.com/marketplace/actions)\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgfarb%2Fsalesforce-actions-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgfarb%2Fsalesforce-actions-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgfarb%2Fsalesforce-actions-demo/lists"}