Skip to content

Gating state machine

VictorLowther edited this page Nov 14, 2012 · 2 revisions

Gating State Machine

Unless otherwise indicated, gating will happen in terms of dev generated pull request bundles.

Automated parts of the state machine, part 1:

  1. Find pull request bundles.
  2. Verify that all pull requests in a bundle are present.
  3. Test that each pull request in the bundle merges cleanly into the branch it should merge into.
  4. Figure out what release/build combinations need to be tested based on the barclamps and branches referred to in the pull request bundle.
  5. Run any applicable pre-build unit tests for each release/build combination.
  6. Figure out what operating systems need to be tested for each release/build combination.

In parallel:

  1. Run a basic build and deploy test for each release/build/OS combination.
  2. Run smoketests for each barclamp involved
  3. If any of the above steps fail, downvote all the pull requests involved in the pull request bundle, otherwise upvote them and solicit code review.

Human parts of the state machine:

  1. Once the automated parts of the state machine pass, the CI infrastructure will ask for code review on the Crowbar mailing list (or another mailing list created for that purpose).
  2. Once 2 people have indicated that they have reviewed and approved of the change, the code will be a candidate for automatic merging.

Automatic merging, part 2:

  1. Go through the same steps as part 1.
  2. Verify that that original submitter of the pull request bundle has a CLA in place.
  3. Merge.
Clone this wiki locally