From 31e5dc64fc76366cbf28a7285ff0047857e8fe43 Mon Sep 17 00:00:00 2001
From: Amir MOHAMMADI <amir.mohammadi@idiap.ch>
Date: Wed, 15 Jun 2022 18:11:16 +0200
Subject: [PATCH] Update release instructions

---
 doc/release.rst | 81 ++++++++++++++++++++++++++++++++-----------------
 1 file changed, 54 insertions(+), 27 deletions(-)

diff --git a/doc/release.rst b/doc/release.rst
index 85dbaab2..9484d5cb 100644
--- a/doc/release.rst
+++ b/doc/release.rst
@@ -7,20 +7,23 @@ Release Management
 ------------------
 
 This package offers tools to release (tag) packages that follow Bob's
-development guidelines.  It automatically updates the ``README.rst`` file of
-the package to setup the correct pointers for the release build and
-documentation badges.  The tools are setup to ensure a changelog is provided
-with each release.  The changelog can be autogenerated from merge-requests or
-commits in the target package.
+development guidelines.  It automatically updates the ``README.rst`` and
+``version.txt`` files of the package to setup the correct version and pointers
+for the release build and documentation badges.  The tools are setup to ensure a
+changelog is provided with each release.  The changelog can be autogenerated
+from merge-requests or commits in the target package.
 
 
 Usage
 =====
 
-Using these scripts is a 2-step process:
+Releasing Bob is a 4-step process:
 
-1. Generate a changelog using ``bdt gitlab changelog``
+1. Generate a changelog using ``bdt gitlab changelog``.
+   * remove ``bob/bob`` from the changelog if it is present.
 2. Tag a release using ``bdt gitlab release``
+3. Release ``bob/bob`` manually.
+4. Release ``bob/docs`` manually.
 
 Use the ``--help`` flag in each command to learn more about each command.
 
@@ -36,16 +39,14 @@ Use the ``--help`` flag in each command to learn more about each command.
    build environment during the packaging.
 
    If you forget to properly tag this package before doing so you risk building
-   against the wrong set of dependencies.
+   against the **wrong set of dependencies**.
 
 
-Manually update changelog
-=========================
+Generate the Changelog
+======================
 
-.. todo:: These instructions may be outdated!!
-
-The changelog since the last release can be found in the file
-``bob/devtools/data/changelog_since_last_release.md``. The structure is
+After generating a ``changelog.md`` file using the ``bdt gitlab changelog``
+command, you must edit the file manually. The structure of the file is
 documented as part of the help message of ``bdt gitlab release``. Read it.
 
 To manually update the changelog, follow these guidelines:
@@ -66,6 +67,24 @@ To manually update the changelog, follow these guidelines:
        and you can continue to another package in the changelog.
 
 
+.. note::
+
+   Remove the ``bob/bob`` line and its associated lines from the changelog if it
+   is present. This package must be released manually.
+
+.. warning::
+
+   Identifying the correct version of each package is important. We follow
+   semantic versioning (see https://semver.org/). Even if there are small
+   breaking changes in the package, we should always bump the major version. Our
+   conda packages rely on that.
+
+Release the Package(s)
+======================
+
+Use the ``bdt gitlab release`` command to tag the release of each package. This
+process is automatic but will take a long time to finish.
+
 Releasing the Bob meta package
 ==============================
 
@@ -85,8 +104,11 @@ Here are the instructions to release Bob meta package:
   .. code-block:: yaml
 
      - bob.ip.binseg ==1.1.0  # [linux]
+     - bob.bio.face ==7.0.0  # [not arm64]
 
-* Test the conda recipe of bob. You may want to cancel the command below once
+  Use ``git diff`` to make sure you have preserved the comments.
+
+* Test the conda recipe of bob. You may want to *cancel* the command below once
   it reaches the unit tests:
 
   .. code-block:: sh
@@ -106,19 +128,20 @@ Here are the instructions to release Bob meta package:
 
   .. code-block:: sh
 
-     $ bdt gitlab release -vvv CHANGELOG --package bob/bob
+     $ bdt gitlab release -vvv changelog.md --package bob/bob
 
 * When the script says ``Waiting for the pipeline *** of "bob/bob" to finish``, you may
   cancel it and check the progress online.
 
-* To revert the pins while in beta run:
+* You must revert the pins while in beta run:
 
   .. code-block:: sh
 
      $ git pull --rebase
      $ bdt gitlab update-bob -vvv --beta
 
-* Like before, **tag the linux only packages manually**.
+* Like before, **tag the linux only or intel only packages manually** and make
+  sure to preserve the comments.
 
 * Commit and push the changes:
 
@@ -127,15 +150,19 @@ Here are the instructions to release Bob meta package:
      $ git commit -m "Remove package pins while in beta. [skip ci]" conda/meta.yaml requirements.txt
      $ git push
 
-You can see that if we could identify linux only packages automatically, the whole
-release process would have been only to run
-``bdt gitlab release -vvv CHANGELOG --package bob/bob``.
-Do you want to help fix that?
+You can see that if we could have preserved the comments automatically, the
+whole release process would have been only to run ``bdt gitlab release -vvv
+changelog.md --package bob/bob`` given that we call ``bdt gitlab update-bob``
+inside that command. Do you want to help fix that?
+
+* Finally, manually edit the tag description of ``bob/bob`` and write a small
+  summary of major changes of this release. Similar to:
+  https://gitlab.idiap.ch/bob/bob/-/tags/v9.0.0
 
 
-Releasing the docs meta package
-===============================
+Release the docs meta package
+=============================
 
-Don't forget to release ``bob/docs`` after the bob release has successfully finished.
-To do so, go to https://gitlab.idiap.ch/bob/docs/-/tags and click on ``New tag``.
-Use the same version number you used for bob.
+Don't forget to release ``bob/docs`` after the bob release has successfully
+finished. To do so, just go to https://gitlab.idiap.ch/bob/docs/-/tags and click
+on ``New tag``. Use the same version number you used for ``bob/bob``.
-- 
GitLab