:orphan:
.. _docs/contrib/07_release_guide/publishing-a-new-release-(for-maintainers-only):
Publishing a new release (for maintainers only!)
================================================
.. _docs/contrib/07_release_guide/base-conventions:
Base conventions
----------------
For each version update (a.k.a **releases**\ ), we use `semantic versioning `_\ :
* **patch** (from ``*.*.{i}`` to ``*.*.{i+1}``\ ): minor modifications, bugfixes, code reformating, small new features, new projects or playgrounds, new tests
* **minor** (from ``*.{i}.*`` to ``*.{i+1}.0``\ ): addition of new major features, minor code structure changes without too much impact on the API (backward compatible)
* **major** (from ``{i}.*.*`` to ``{i+1}.0.0``\ ): major changes in code structure, design, and API, with changes potentially breaking backward compatibility
.. _docs/contrib/07_release_guide/release-pipeline:
Release Pipeline
----------------
First, create a ``new-release`` branch (or choose a similar name), either on your fork or on the main ``pySDC`` repo. Then, on commit:
#. modify the project version number and, if necessary, the list of authors in ``pyproject.toml``
#. modify the documentation release number in ``docs/source/conf.py``\ , and the version number for minor and major release. Also, if necessary, adapt the list of authors.
#. modify the version number, release date and, if necessary, the list of authors in ``CITATION.cff``
#. (for minor and major release **only**\ ) add the release description in the ``CHANGELOG.md`` file, following the level of details you can find there
Commit with the message: ``bump version to x.x.x`` where ``x.x.x`` is the new version.
Then create a pull request, and once all tests passed, you can ``Merge and Squash``\ ,
possibly adding your initials as prefix of the final commit message.
..
🔔 Don't forget to delete the ``new-release`` branch both locally and on your fork (or the main repo):
.. code-block:: bash
git push -d origin new-release # delete on remote
git branch -D new-release # delete locally
Finally, `draft a new release `_ associated to a new tag
``v*.*.*`` (with ``*.*.*`` the new version, and the ``+ Create new tag: ... on publish`` button).
Add a comprehensive summary of the main changes, with appropriate thanks to all the contributors (cf previous releases), and publish it. This will trigger automatically a release update on `Zenodo `_.
For uploading the new release on `PyPI `_\ , this is done manually so you'll have to ask `Robert Speck (@pancetta) `_ for support (ideally send him a quick email).
|:arrow_left:| :doc:`Back to adding Project <./06_new_project>` ---
|:arrow_up:| :doc:`Contributing Summary <./../../CONTRIBUTING>` ---
|:arrow_right:| `Next to a cute picture of cat `_