You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1.6 KiB

Flow

flowchart TB;
	stable([stable]);
	production([production]);
	validated([validated]);
	
	branch-- [1] -->branch;
	branch-- [2] -->develop;
	develop-- [3] -->stable;
	stable-- [4] -->production;
	production-- [5] --> validated;
  1. Branches are tested with quick tests; builds happen in 1 or 2 OSes
  2. Once the branch is marked as "Ok", it can be merged back into develop
  3. Every time there is a commit on develop, a larger test, which runs more cases and builds for different OSes and compiler versions is run; when it passes, a tag "stable" is set on this commit
    1. The execution is not interrupted on new commits, but if there were new commits during this execution, a new execution is triggered just after
    2. On failure, "stable" does not move.
  4. Every time stable is updated, the midsized tests are run (in the same fashion the short ones are); when it passes the tag "production" is updated
    1. Same as "stable", executions are not interrupted, but queue for next
    2. Same as "stable", on failure the "production" is not changed
  5. Every time production is updated, the large cases are run; when they pass, the tag "validated" is updated

Versioning/Distribution

For versioning, we could use the base branch as reference:

  • "develop" would use "stable-vd.e.v", "production-vd.e.v" and "validated-vd.e.v"
  • "v4.2" would use "stable-v4.2", "production-v.4.2" and "validated-v.4.2"
    • Final versions could be tagged "v4.2.1", for example, inside the "v4.2" branch

One thing we'll need for this is something to keep listening to changes in branches, including adding tags.

Proof of Concept