Version 23 (modified by wojciech, 2 months ago) (diff)

Release Process

The following outlines the SasView release process.

Reminders

Planning a new major release

  • Releases are discussed at the bi-weekly meeting. Only planned releases are acceptable.
  • Once the developers are completely done with their changes and have tested their own code, they should close their ticket and announce it to the rest of the team.
  • Once all developers are done with their work, the release will be discussed at the following conference call.
  • During that call, a "release manager" will be appointed for that release. That person is responsible for following the release process below and communicating progress to the team. The release manager will need to have release privileges on the repository.
  • After a release manager has been appointed, a code freeze is declared.

Testing a new major release

  • After the code freeze, developers and chosen users will test the release candidate.
  • All bugs and issues identified will be ticketed and either fixed or discussed on the conference call to ascertain if they must be fixed (blockers) or can remain known issues to be reported in release notes and fixed in a future release.
  • Once everyone agrees that the release candidate is ready, the release manager will start the final release process.

Penultimate release steps performed by the release manager

  • Update the /sasview/docs/sphinx-docs/source/user/RELEASE.rst with the latest version of the release notes
  • If this is a full release, get the Zenodo DOI
  • If this is a full release, update the Zenodo and version number in src/sas/sasview/local_config.py
  • We should only be using tagged version of sasmodels in a SasView release unless there is a compelling reason to release from the current sasmodels HEAD. If this release is against a NEW version of sasmodels
    • make sure that to update sasmodels.init.py to the correct version number
    • tag HEAD, or the appropriate commit with the release number. to do so you can either:
      • Use git to tag HEAD or a commit $ git tag -a vx.y.z -m "sasmodels version x.y.z"or
      • create a release from github. NOTE: creating a Draft release will NOT create a tag
  • Make sure that the SasView version number is correctly placed in all the appropriate places. That currently includes:
    • src/sas/sasview/local_config.py (where the DOI and vers number go for the about box - should have been done when updating with the Zenodo number above)
    • /sasview/docs/sphinx-docs/source/user/RELEASE.rst (should have been done as part of updating release notes above)
    • src/sas/sasview/_init_.py
    • docs/sphinx-docs/source/conf.py (change both version and release numbers)
    • NOTE: sasview.latestversion has now been superseded by the json file stored at the sasview site.
  • Using instructions published at GitHub https://help.github.com/articles/creating-releases/
    • Tag HEAD or the appropriate SasView commit point for the release. As with sasmodels this can be done either:
      • Use git to tag HEAD or a commit $ git tag -a vx.y.z -m "SasView version x.y.z"or
      • create a release from github. NOTE: creating a Draft release will NOT create a tag
    • Note: if decision is made to make a release from an old enough commit point that it is not available on the GitHub interface the tag can be generated using the local git interface
  • Log into the Jenkins server, navigate to the releases tab and for each platform use "configure" to edit the configuration to use the appropriate sasmodels and SasView tags for the build.
  • Next, manually launch the Jenkins build processes for each platform being supported.
  • Once the build process is complete, download the mac and windows builds from the Jenkins release build tab and upload the binaries to the releases page. Note that the mac and windows builds will need to be renamed appropriately. Current naming convention is:
    • Windows: setupSasView-V.v.v.exe
    • mac: SasView-V.v.v-MacOSX.dmg
  • An abbreviated version of the release notes in the README.rst should be entered in the Release Description section.
  • The documentation folder contents (html version) needs to be moved to the sasview.github.io repo under docs.
    • The first step it to git create a new folder (docs_x.y.z) under docs/old_docs where x.y.z is the version number being superseded (i.e. the version of the docs currently in the repo).
    • git move all the folders and files currently under docs to docs/old_docs/docs_x.y.z
    • git copy the new html docs (all folders and files) to docs
      • Currently the release manager can either build the docs locally, but for consistency with the release docs it is strongly recommended that instead they install the release version and copy the docs from the install path. These can just be git copied into the github.io repo folder.
    • commit and push these changes
  • The documentation is also built as a PDF and the PDF link for the website also needs to be updated to the new PDF version.
    • Again, the first step is to git move the SasViewDocumentation.pd to downloads/Old_SasViewDoucmentation/
    • The new PDF is available on the Jenkins Master Build tab of the OSX and Ubuntu builds only. NOTE: they are not currently available in any of the release builds which means they should be downlowded from Mater build immediately after last commits before tagging a release. This should be changed to add a PDF build on the release servers at some point.
    • PDF should be downloaded as SasViewDocumentation.pdf.
    • The pdf should then be git copied or git moved to the sasview.github.io/downloads folder.

Final release steps

  • The release manager will email the team to announce the release process is complete.
  • The team should download the new release to make sure it installs. Because the release build servers are different than the developer build servers, build server fixes and dependency updates may not have been propagated over to the release server so some rudimentary testing should be done to double check that all is well.
  • Once final approval is given, the release number should be updated in latestversion.json on the SasView website repo which will alert all SasView users that a new version is available.

Uploading sasmodels to pypi

sasmodels are also avaialble from pypi (sascalc should be avaialable in the future). In order to do this, one needs to checkout tagged version and then build dist in sasmodels folder: python setup.py sdist bdist_wheel Once this is done one can upload sasmodels to pypi using twine: twine upload dist/*.

Post release steps

Once the release is completely done and out, it is recommended that the version numbers in master get updated to the next planned release version number so that developers testing can easily tell they are running a post release version.  Just the init.py and possibly the sphinx conf.py should be updated at this point. 

  • src/sas/sasview/_init_.py
  • docs/sphinx-docs/source/conf.py (change both version and release numbers)

Patch releases

  • Currently patch releases follow the same process as major releases but the cycle is usually much abbreviated.

Pre releases (alpha and beta releases)

  • Pre-releases follow a much less formal acceptance process but otherwise follows the same technical process - make sure to click "This is a pre-release" check box when drafting a new release on GitHub.