=========================================
Checklist for releasing a new NAV version
=========================================
.. highlight:: sh
CI status check
---------------
* Verify that the GitHub Actions workflows (at
https://github.com/Uninett/nav/actions ) related to the current stable branch
are all green.
* If any tests are failing, these must be resolved before moving forward.
Review milestone for next release on GitHub
-------------------------------------------
* Check the list of issues targeted to the upcoming milestone at
https://github.com/Uninett/nav/milestones .
* Are all the targeted bugs closed?
* Please remember that the series branch must be merged to ``master`` for
the related issues to be automatically closed by GitHub.
* Unless any unfixed issues are showstoppers, untarget them from this milestone
to remove clutter.
Getting the code
----------------
* Start by cloning the latest stable branch (or use ``git fetch; git checkout
4.8.x`` to update your existing clone), e.g. 4.8.x::
git clone -b 4.8.x git@github.com:UNINETT/nav.git
cd nav
Ensure generated docs are up to date
------------------------------------
Some documentation source files need to be built using a running PostgreSQL
database. If any changes have been made to the default event- and
alert-hierarchies provided by NAV, these documentation source files need to be
updated and checked into Git.
If you have a full dev environment running (such as the environment defined by
:file:`docker-compose.yml`), use the following to generate new docs and verify
whether they have changed::
make doc
git status
If you see files under the :file:`doc` directory were changed, these changes
need to be checked into Git to ensure the documentation is up to date for the
new release.
Updating changelog and release notes
------------------------------------
* Generate a list of referenced issues from the GitHub milestone::
./tools/buglog.py 4.8.3
``buglog`` depends on the ``github`` library, install with
``pip install PyGithub``.
(`PyGithub documentation `_)
* Add a new entry :file:`CHANGELOG.md` for for the new release and paste the
list produced by the above command. Sort items into types of changes
according to the principles of `Keep A Changelog
`_, and optionally change item titles
to be more end-user friendly if need be. Commit the changes::
git commit -m 'Update changelog for the upcoming X.Y.Z release'
* Bump and tag the version number (and sign the tag) using ``version.sh``, and
push the changes back to the official repository::
./version.sh -t
git push --tags
Announcing the release
----------------------
* Draft a new release for the new tag at GitHub.
* Add a new release entry in the NAV homepage at
https://github.com/Uninett/nav-landing-page/tree/master/content/releases
* Change the topic of the #nav Libera.Chat IRC channel to reference the new
release + GitHub URL.
* Send email announcement to the ``nav-users`` mailing list. Use previous
release announcements as your template.