Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add administrative tasks for releasing 4C #253

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/readthedocs/developer_addedinformation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ Additional information
coverage_report
developer_ccache
developer_cluster
developer_release
29 changes: 29 additions & 0 deletions doc/readthedocs/developer_release.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
How to release |FOURC|
----------------------

.. note::
This section is only relevant for the maintainers of the repository.

|FOURC| is released regularly on GitHub. This section describes the
administrative tasks that need to be performed for publishing a release on GitHub. Releases are
managed and created by @4C-multiphysics/maintainer.

1. Check whether all changes that should be part of the release are merged into the ``main``-branch.
2. Update the version number in the ``VERSION`` file in the repo. The version scheme is ``YYYY.MINOR.PATCH``, where ``YYYY`` is the year of the release, ``MINOR`` is the number of the release in the year starting at ``1``, and ``PATCH`` is the patch number. ``PATCH`` is typically ``0`` and incremented on demand. Typically, this step only involves removing the ``-dev`` suffix from the version.
3. Pick a commit from ``main``-branch where all nightly tests have passed and the above points are satisfied.
4. Create a new branch from the commit chosen in the previous step. The branch should be named ``release/YYYY.MINOR.x``. Note, since all patches are maintained on this branch, the name does not contain the respective patch number.
5. Create a new release on GitHub. The tag name should be ``vYYYY.MINOR.PATCH`` and the release title should be ``4C version vYYYY.MINOR.PATCH``. The release notes might contain a summary of the changes since the last release or a description of the fixed bugs in a PATCH release.
6. Update the tags of the all docker images, e.g., ``4c`` and ``4c-dependencies-ubuntu24.04``. Add the tag ``YYYY.MINOR.PATCH`` to the images, and ``latest`` if it is the latest release. You can tag an image with the following commands locally:

.. code-block:: shell

docker pull ghcr.io/4c-multiphysics/4c:{version}
docker tag ghcr.io/4c-multiphysics/4c:{version} ghcr.io/4c-multiphysics/4c:YYYY.MINOR.PATCH
docker push ghcr.io/4c-multiphysics/4c:YYYY.MINOR.PATCH

7. Prepare the next release in the `VERSION` file in the repo by incrementing the number of the release, resetting the patch number to `0` and adding the suffix `-dev`.

.. note::
For a PATCH-release, only the steps 4 to 6 are necessary. Commits are typically added to the ``main``
branch and cherry-picked to the release branch. That ensures that the main branch is fixed and the
PATCH itself is still comptabile with all projects consuming a specific version of |FOURC|.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
PATCH itself is still comptabile with all projects consuming a specific version of |FOURC|.
PATCH itself is still compatible with all projects consuming a specific version of |FOURC|.

This reminds me of #240 :)

Loading