Initial transition to the 'develop'/'master' workflow
Created by: bartlettroscoe
Next Action Status:
Brent is manually updating 'master' from 'develop' about once a day using fast-forward merges. Next: Automate the update from 'develop' to 'master' based on new post-push CI build (see #482 (closed)) ...
CC: @jwillenbring, @bmpersc, @maherou, @rppawlo
Blocked By: #158 (closed), #410 (closed)
Blocking: #380
Description:
This story is to transition Trilinos to the 'develop'/'master' branch workflow which is described in great detail here.
In summary, developers will commit directly to the ‘develop’ branch and then a --no-ff
merge will be performed to merge from develop
to master
when selected builds and package tests all pass (hopefully once every day). Initially, we will just have a single CI build that is run using the checkin-test.py script (based on the SEMS Dev Env, see #158 (closed)) and if that build passes, the merge to 'master' will occur. Longer term, we will use the new CDash API to query to decide if to update 'master' or not.
- Benefits:
- Developers still only perform the simple centralized CI workflow (only now on ‘develop’, not ‘master’)
- Improve the stability of the ‘master’ branch seen by users
- Provide a low-overhead release-like mechanism for Trilinos
- Costs:
- Some minimal git training (just need to teach how to get on a local ‘develop’ tracking branch and transition existing local work to the 'develop' branch)
- Minimal extra complexity (i.e. get on 'develop' and push to ‘develop’ instead of ‘master’)
- Infrastructure team implementation and maintenance of the cron job that updates ‘master’ from ‘develop’.
- Involves:
- Required for all Trilinos developers (directly pushing to the ‘master’ branch will no longer be allowed by average Trilinos developers)
Definition of Done:
- All Trilinos developers are developing on and pushing to 'develop' instead of 'master'
- An automated job (not a human) is checking at least one automated build of Trilinos and is then updating 'master' from 'develop' if it passes.
Tasks:
- Write up instructions on how to do the 'develop' branch workflow ... see here [Done]
- Decide on timeline for transition ... see below [Done]
- Write up instructions on how to move commits from existing local 'master' branch to local 'develop' branch ... see below and here [Done]
- Create ‘develop’ branch off of ‘master’ and push to GitHub repo ... see below [Done]
- Tuesday, 5/31/2016: Send out email announcing the transition and point to the wiki documentation (i.e. do full initial git setup, get on local tracking 'develop' branch and transitioning local commits from 'master' to 'develop') ... see below [Done]
- Discuss impact on 'develop'/'master' workflow and possible back-outs of merges to 'master' on customer projects like 'Drekar' and others ... They will just initially pull from 'develop' instead of 'master' (see below) [Done]
-
Wednesday 6/8/2016: Do the transition (i..e "flip the switch"):
- Send out email to trilinos-developers reminding of the the transition (and pointing to documentation materials) ... see below [Done]
- Send out email to trilinos-developers to mark the start of the transition (can't push to 'master'). [Done]
- Block who can directly push to ‘master’ on github repo (allow just a few people to push to 'master' initially). [Done]
- Update the github ‘develop’ to current tip of github ‘master’. [Done]
- Open up pushes to the 'develop' branch. [Done]
- Send out email to trilinos-developers announcing that the transition is complete (again pointing to documentation and provide list of people they can ask for help). ... see below [Done]
- Switch over automated CI and Nightly testing to pull from 'develop' instead of 'master' (see below). [Done]
- For first few days, just do manual updates from 'develop' to 'master'. ... IN PROGRESS (this has been going on for nearly 6 months!) ...
- Replace manual updates of 'master' with cron/Jenkins job that runs the standard CI build (#482 (closed)) using standard SEMS Dev Env (#158 (closed)) and updated set of PT packages and TPLs (#410 (closed)) as gate to update from 'develop' to 'master' ... Deferred to #982 (closed)