trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.21k stars 564 forks source link

Initial transition to the 'develop'/'master' workflow #370

Closed bartlettroscoe closed 7 years ago

bartlettroscoe commented 8 years ago

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) ...

CC: @jwillenbring, @bmpersc, @maherou, @rppawlo

Blocked By: #158, #410

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) 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.

Definition of Done:

Tasks:

  1. Write up instructions on how to do the 'develop' branch workflow ... see here [Done]
  2. Decide on timeline for transition ... see below [Done]
  3. Write up instructions on how to move commits from existing local 'master' branch to local 'develop' branch ... see below and here [Done]
  4. Create ‘develop’ branch off of ‘master’ and push to GitHub repo ... see below [Done]
  5. 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]
  6. 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]
  7. 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]
  8. Switch over automated CI and Nightly testing to pull from 'develop' instead of 'master' (see below). [Done]
  9. For first few days, just do manual updates from 'develop' to 'master'. ... IN PROGRESS (this has been going on for nearly 6 months!) ...
  10. Replace manual updates of 'master' with cron/Jenkins job that runs the standard CI build (#482) using standard SEMS Dev Env (#158) and updated set of PT packages and TPLs (#410) as gate to update from 'develop' to 'master' ... Deferred to #982
bartlettroscoe commented 8 years ago

Relating to the debate mentioned in the [above comment](), here is a question in an email just today that would have been answered automatically if we changed to do '--no-ff' merges from 'develop' to 'master'.

> -----Original Message-----
> From: Trilinos-developers [mailto:trilinos-developers-bounces@trilinos.org] On
> Behalf Of Domino, Stefan Paul
> Sent: Monday, August 22, 2016 9:04 AM
> To: Perschbacher, Brent M; Trilinos Developers List
> Subject: Re: [Trilinos-developers] [EXTERNAL] FW: NaluBuildTest Linux:
> 08/16/2016
> 
> Greetings,
> 
> I have another set of widespread diffs showing up in my nightly tests.
> 
> Have we updated the head again?
> 
> Best,
> 
> Stefan

If we did explicit merge commits, then Stefan would know automatically if an update had been done or not.

I have an idea for how to automated the update from 'develop' to 'master' using the existing Jenkins CI build without requiring a CDash upgrade. I will document that shortly (I have a few other Stories from other projects I have to move forward first).

bartlettroscoe commented 7 years ago

Now that a new post-push CI build is up and running, it would be pretty simple to automate the updating from the 'develop' to the 'master' branch based on the post-push CI build. Basically, all you do is update the script sems_ci/single_ci_iter.sh to check the return value of the ctest -S command and if it is 0, then you do a --no-ff merge from the 'develop' branch to the 'master' branch. Recently TribitsCTestDriverCore.cmake was updated to return non-zero if there is any pull, configure, build or test failures that makes this possible (see https://github.com/TriBITSPub/TriBITS/commit/50d8cdfc591cc723f26e0f99b7e8679e1e0f913d). (That change was made to allow TriBITS use CTest/CDash with Travis CI.)

If someone thinks this is a bad idea, please let me know. Otherwise, I will try to get to this soon.

bartlettroscoe commented 7 years ago

Given that #982 for automating the update from 'develop' to 'master' has been created by @jwillenbring, we can remove that scope from this Story. Therefore, this story is now complete. No need to review since the addition of the 'develop' branch was done a long time ago.

Closing as complete.