Skip to content

ReleaseProcedure

Paul H. Hargrove edited this page Mar 17, 2019 · 83 revisions
  1. Update UPCXX_VERSION version number in src/upcxx.hpp
    1. should be of the form: YYYYMMPP
    2. Y and M represent numeric year and month of the release
    3. PP = patch number, starting at 0 for a "normal" (ie not hotfix) release
  2. Update version info in utils/upcxx-run:load_args()
  3. Update GASNet-EX spec version floor in src/backend/gasnet/runtime_internal.hpp and corresponding error message
  4. Update ChangeLog + version info in README
  5. Update nobs default URL to point at EX release tarball
  6. Commit final guide PDF to docs/guide.pdf
    1. upload to berkeleylab/upcxx downloads area with name like upcxx-guide-2017.9.0.pdf
    2. TAG the guide repo
  7. Commit final spec PDF to docs/spec.pdf
    1. upload to berkeleylab/upcxx downloads area with name like upcxx-spec-V1.0-Draft4.pdf
    2. TAG the spec repo
  8. Generate source release-candidate tarball (from git working dir)
    Be sure to change version in the following:
    git archive --remote=origin develop --prefix=upcxx-2017.9.0/ --format=tar.gz --output=upcxx-2017.9.0.tar.gz
    Upload this release candidate to (private) berkeleylab/upcxx downloads area
  9. Email local group to review the release-candidate
  10. Ask an ADMIN to grant you WRITE access to the 'master' branch
  11. Merge to master (updating version below)
    git remote update
    git checkout master
    git pull --ff-only
    git merge --no-ff -m 'Merge develop for 2017.9.0 release' origin/develop
    (push to a private fork on BitBucket or inspect locally with git log)
    git push origin master
  12. Ask an ADMIN to revoke WRITE access to the 'master' branch
  13. TAG master (updating version below)
    git tag -a -m 'UPC++ 2017.9.0 release' upcxx-2017.9.0 master
    git push origin upcxx-2017.9.0
  14. Generate final tarballs - must come AFTER the previous step has pushed to remote
    1. Run the follow command in the git working directory
      ./utils/release.sh
    2. Validate the git hash matches the tip of master holding the release tag.
    3. Collect the md5sum for the generated tarball (at end of the output).
    4. Upload these final tarbals to (public) berkeleylab/upcxx downloads area.
  15. Download the main (not "offline") tarball just uploaded into a different directory.
    1. Run md5sum on the download and verify it matches the checksum from the previous step.
    2. Extract the packaged git hash:
      gzip -cd upcxx-2017.9.0.tar.gz | git get-tar-commit-id
    3. Validate the git hash matches the tip of master holding the release tag.
    4. Unpack the tarball and inspect the contents of README.md and src/upcxx.hpp for correct versioning.
  16. Advance draft number and append ".dev" suffix on spec master branch in upcxx-spec.tex
  17. Advance patch number in upcxx-prog-guide/Makefile
  18. Advance patch version number on develop branch in src/upcxx.hpp
  19. Change nobs URL back to collaborator-snapshot on develop
  20. Tag the develop branch to match the new content of src/upcxx.hpp
    git tag -a -m 'tagging YYYY.M.P for development' upcxx-YYYY.M.P develop
  21. Push the previous several steps (substituting the correct version).
    git push origin develop upcxx-YYYY.M.P
  22. Review and revise the release announcement
  23. Navigate to the wiki and git clone it to your local system
  24. Add any new publications (eg updated spec or guide) to
    wiki/Publications.md
    wiki/pagoda.bib
    wiki/pubs/*.pdf
  25. Update all 3 issue trackers: add this release to Versions, next one to Milestones and as default Milestone
  26. Update NEWS and Download sections of wiki/Home.md with info on the new release download including links, moving old links to a new line in the Previous Releases section
  27. Update wiki/{README.md,INSTALL.md,LICENSE.txt,docs/*} with files from the release, overwriting the version there. Be sure to audit these changes before committing to look for information loss.
  28. Audit {README,INSTALL}.md for links within the source tree (which will be broken on wiki) and de-link them
    1. Currently known:
    2. INSTALL.md: example/prog-guide/Makefile
    3. Update this list after each audit
  29. Push your wiki changes and audit everything on the live page, especially checking for broken links.
  30. Add md5sum of each download (code, guide, spec) to announcement
  31. Send the announcement
  32. Add link to the archived announcement (see 1st step in mgmt goop below for how to get it) to the NEWS entry in the wiki and push it again
  33. Ask Dan or Paul to update the SourceForge download mirror
  34. Bug Paul to install on NERSC, Dirac, Kotten, etc. ...

Post-release management goop

  1. Add URL of Google Groups announcement to the Milestone Memo
    1. Visit the upcxx googlegroup page
    2. Click on the announcement to view it
    3. Click the 🔽 to the right of the message date (says "More message actions" when you roll over)
    4. Select ":link: Link"
    5. Copy to your clipboard (Ctrl-C or command-C, as appropriate)
    6. Paste into the .docx for the memo
  2. Upload PDF (not .docx) of Milestone Memo as an attachment to Milestone Reports page in Confluence
  3. Add URL for the new Confluence Memo attachment to the footer of Milestone Highlight Slide
  4. Attach PDF (not .pptx) of Milestone Highlight Slide as an attachment to Milestone Reports page in Confluence
  5. Update/add section to Milestone Reports page with links to
    1. JIRA entry in the heading
    2. Memo attachment (uploaded a few steps earlier)
    3. Slide attachment (uploaded a few steps earlier)
    4. Code tarball
    5. Spec PDF
    6. Guide PDF
    7. Google Groups announcement
  6. Perform a second upload of the following two to JIRA Epic as attachments
    1. Milestone Completion Memo PDF
    2. Milestone Highlight Slide PDF
  7. Finish the JIRA Epic by hitting Workflow > Done
  8. Add links to the Confluence-attached Memo to Confluence Quarterly Report page below "Accomplishments / Milestones Delivered During This Period". Past quarters show example.

Clone this wiki locally