Skip to content

CAM SE Workflows

cacraigucar edited this page Aug 12, 2019 · 33 revisions

CAM SE Workflows

This page describes the process once a scientist has indicated on their issue that their branch is ready for master. This documents the steps that the assigned SE will perform.

CAM SE scheduler duties

  1. Enter a card for the request onto the CAMdev project board (barring PTO this should happen within a day of the request) [Include link for project page here once it is created]
  2. If possible, assign the SE who will be responsible for bringing this onto master.

Assigned SE's duties [assume that these duties start when the issue is near the top of the queue??]

  1. Copy scientist branch to your fork

  2. Perform necessary cleanup (if any needed) prior to issuing a pull request [OR-- do we want to have a pull request issued immediately and we have a separate step which indicates that the code is ready for review?]

  3. Go to your CAMdev fork's GitHub page, and select the "Pull requests" tab:

  4. Create a new pull request using the "new pull request" button:

  5. Set the "base repository" to "NCAR/CAM", and the "base" to your branch of interest (likely "master"):

  6. Set the "head repository" to your CAM fork repo, and the "compare" to your newly created branch:

  7. If the phrase "Able to merge" is present, then select "create pull request":

  8. Add a title for your request, along with a description of what your pull request is doing. Fill out all fields in the template while removing any template comments. Be sure to list the issue(s) which are addressed by this pull request, taking care to use the correct syntax.

  9. Add a label (ideally one that matches the associated issue), along with the project and milestone, if applicable. Once finished, create the pull request.

  10. CAM software engineers will perform code review, add comments, and request any necessary changes.

  11. Make requested changes to personal branch (Following the above instructions for modifying your fork).

  12. Finally, the PR will be merged with upstream branch (e.g. "master"). Testing will be done, and if all is okay, the changes will be merged into the release branch.

Run CAM tests

  • On Izumi: Run <root>/test/system/test_driver.sh with CAM_FC=pgi and CAM_FC=nag
  • On Cheyenne: Run <root>/test/system/test_driver.sh with CAM_FC=intel
  • Fix any errors and/or document expected fails
  • If a science run is required (e.g., for answer changing updates or for new tests),

Make a CAM tag

  • Make sure all CAM tests have been run on the HEAD of the branch (e.g., master or release branch)
  • Update ChangeLog to reflect all changes since previous tag on branch (script?)
  • Commit to branch and push to proper remote
  • Make annotated tag with the ChangeLog summary as the tag commit message
  • Push the tag to the proper remote

Handle a pull request to master

Make a code change in release branch and master

Update development from master

Create a new release

Clone this wiki locally