Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maintain a pool of scratch orgs with master dependencies preinstalled #109

Open
jlantz opened this issue Aug 31, 2017 · 0 comments
Open

Comments

@jlantz
Copy link
Contributor

jlantz commented Aug 31, 2017

Allow for faster builds by pre-provisioning a pool of scratch orgs with all dependencies from the master branch preinstalled. Some thoughts on how this would work:

  • Add a new dependencies flow to CumulusCI that does everything from dev_org up to the deploy task. This flow would effectively install all the project's dependencies. For NPSP, it would preinstall all the underlying managed packages.

  • New worker task to spin up orgs and run the dependencies task against them. When that provisioning completes, the ScratchOrgInstance gets added to a pool for the org.

  • When a build runs, it will try to create an org from the pool. If the pool org available, the build will run against the org. In most cases, the build's dependencies will be the same as master. In this case, the update_dependencies task will run much faster since the correct versions are already preinstalled. If an org is not available from the pool, the build would provision its own scratch org as it currently does.

  • We would need some way of recording the log from the dependencies flow execution and scratch org creation. This probably shouldn't be a Build as it's more a background convenience thing.

  • Background scheduled jobs would be used to delete pool orgs older than 5 days and to

  • We'd need to figure out how many orgs to pre-provision like this. It could be either a manual setting or potentially a calculated job based on the build load of a given project. It's probably something we'd want to be able to select for individual repositories. For example, it's very important for NPSP since it depends on 5 managed packages, but it's not as critical for CampaignTools that doesn't depend on other managed packages.

This is based on an idea from @cdcarter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant