@@ -4,22 +4,6 @@ AMICI developer’s guide
44This document contains information for AMICI developers, not too
55relevant to regular users.
66
7- Branches / releases
8- -------------------
9-
10- For AMICI, we mostly do `trunk-based development <https://trunkbaseddevelopment.com/ >`__.
11- All new contributions are merged into ``main `` after passing the test suite
12- and code review. Releases are usually created directly from ``main ``.
13- New releases are created on GitHub and are automatically deployed to
14- `Zenodo <https://doi.org/10.5281/zenodo.597928 >`__ for
15- archiving and to obtain a digital object identifier (DOI) to make them
16- citable. Furthermore, our `CI pipeline <documentation/CI.md >`__ will
17- automatically create and deploy a new release on
18- `PyPI <https://pypi.org/project/amici/ >`__.
19-
20- We try to keep a clean git history. Therefore, feature pull requests are
21- squash-merged to ``main ``.
22-
237When starting to work on some issue
248-----------------------------------
259
@@ -131,11 +115,60 @@ C++
131115- For new code, we use `Google's C++ style guide <https://google.github.io/styleguide/cppguide.html >`__ as a reference.
132116
133117
134- Matlab
135- ^^^^^^
118+ Branches / releases
119+ -------------------
120+
121+ For AMICI, we mostly do `trunk-based development <https://trunkbaseddevelopment.com/ >`__.
122+ All new contributions are merged into ``main `` after passing the test suite
123+ and code review. Releases are usually created directly from ``main ``.
124+ New releases are created on GitHub and are automatically deployed to
125+ `Zenodo <https://doi.org/10.5281/zenodo.597928 >`__ for
126+ archiving and to obtain a digital object identifier (DOI) to make them
127+ citable. Furthermore, our `CI pipeline <documentation/CI.md >`__ will
128+ automatically create and deploy a new release on
129+ `PyPI <https://pypi.org/project/amici/ >`__.
130+
131+ We try to keep a clean git history. Therefore, feature pull requests are
132+ squash-merged to ``main ``.
133+
134+ Release process
135+ ^^^^^^^^^^^^^^^
136+
137+ Releases are created by the maintainer team.
138+
139+ To create a new release, please follow these steps:
140+
141+ 1. Ensure that all changes intended for the new release are merged
142+ into ``main ``.
143+
144+ 2. Update ``CHANGELOG.md `` with a short description of the changes
145+ included in the new release. Focus on user-relevant changes.
146+
147+ 3. Bump the version number in `version.txt ` according to
148+ `Semantic Versioning <https://semver.org/ >`__.
149+
150+ 4. Regenerate the test models by running
151+
152+ ```shell
153+ python -c "from amici.testing.models import import_test_models; import_test_models()"
154+ ` ``
155+
156+ This ensures that the models can be imported with the new version.
157+
158+ 5. Create a new release on GitHub, using the new version number prefixed
159+ by "v" (e.g., "v0.12.0"). Copy the relevant parts of
160+ ``CHANGELOG.md `` into the release notes.
161+
162+ 6. After creating the release, our GitHub Actions pipeline will automatically
163+ create and deploy the new release on Zenodo and PyPI.
164+ Verify that this was successful.
165+
166+ In rare cases, it might be necessary to create a hotfix release for a
167+ critical bug in an existing release. In this case, create a new branch
168+ from the respective tag, apply the fix (usually a backport from ``main ``),
169+ and follow the same steps as above, starting from step 2.
170+ Merge the updated CHANGELOG and version bump back into ``main `` afterwards.
136171
137- No new Matlab code should be added to AMICI
138- (see `#2727 <https://github.com/AMICI-dev/AMICI/issues/2727 >`__).
139172
140173Further topics
141174--------------
0 commit comments