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

Feature/build queuing #3

Open
wants to merge 118 commits into
base: master
Choose a base branch
from
Open

Feature/build queuing #3

wants to merge 118 commits into from

Conversation

SalesforceRocks
Copy link
Collaborator

A problem that many organizations face who do many pushes to feature branches with CumulusCI is that there is only one 'feature org'. Trying to build two or more builds of feature branches at the same time, results in collisions and an indeterminate state of the 'feature org'.

The build queuing feature solves this for CumulusCI 1.0. With the CLI command ci bind_org a build process running on a VM reserves (or 'binds') the 'feature org' (or any other org) to itself by setting a lightweight tag in Github. With the CLI command ci release_org a build process releases the 'feature org'.

When a build process tries to bind an already bound org, an OrgBoundException is thrown and the build fails OR the build process waits a definable amount of time and retries (again it's possible to define the number of retries).

The build.xml has been extended for the deploy_CI command with the bind_org and release_org commands.

The architecture is based on only standard python libraries (github mainly) and is thoroughly tested (unit testing provided).

jlantz and others added 30 commits July 5, 2016 10:59
version to avoid query timeouts with many subscribers
body that was not auto-generated release notes
Chris Polcyn and others added 30 commits July 21, 2016 15:02
Fixed several small issues with package.py and upgraded version.properties to 37 (Summer ' 16)
…/refactor-release-notes

Feature/refactor release notes
…espace conflicts. Added get_tags.py to get all tags from a github repository (uses github standard library). Added github_tests.py to test this. Added some skeleton work to build.xml to allow for 'queued' builds. Added FlexiPage support to package.py on request of Sage
…tags for storing status. Added codeship support to cumulusCI CLI
…g-info files. Added them to .gitignore. Made ci and its subdirectories a separate pip module so cumulusci CLI can be installed including the new commands. Started work on refactoring the bind_org command
… a lot of copy and paste code. Tested it IRL. Added the commands to the CLI
…ue pairs (orgname/build_name) stored in the root in a configurable branch on github. The storage is configurable so it could use something different than github or something different than a file but currently the only implementation is Github with a file.
… a click.echo message every time the bind command pulls while it is waiting (to prevent failure on Codeship). Fixed some tests to adhere to the improvements.
…an org is properly released after a build fails
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants