Warning, /acts/docs/contribution/release.md is written in an unsupported language. File is not indexed.
0001 # How to make a release
0002
0003 We use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) for all of our PRs. We use the common prefixes: `fix:`, `feat:`, `build:`, `chore:`, `ci:`, `docs:`, `style:`, `refactor:`, `perf:`, `test:`.
0004
0005 The next version number for a release is automatically determined from the PRs (commits) that have been merged since the last release, following semantic versioning. On top of that, release notes are automatically generated from the PR titles, using the prefixes as groups.
0006
0007 ## Step 1: Update the release branch
0008
0009 :::{note}
0010 This assumes you have a local clone of the ACTS repository at hand.
0011 You'll also need write permissions on the upstream ACTS repository to be able to push to the `releases` branch.
0012 :::
0013
0014
0015 ```console
0016 $ git checkout releases
0017 $ git fetch upstream # make sure you're up to date
0018 $ git merge --no-ff upstream/main
0019 ```
0020
0021 At this point, your commit graph should look something like this:
0022
0023 ```console
0024 de4bffa 2022-06-23 11:02 +0200 Paul Gessinger M─┐ [releases] Merge remote-tracking branch 'origin/main' into releases
0025 75f0835 2022-06-22 19:27 +0200 Andreas Stefl │ o fix: SimulationActor produces negative MaterialSlab thickness (#1288)
0026 c586094 2022-06-22 18:41 +0200 Andreas Stefl │ o refactor: python examples vertex_fitting.py (#1286)
0027 e6e7949 2022-06-22 10:31 +0200 Paul Gessinger │ o ci: Bump ccache max size to 500MB (#1285)
0028 bf8cb1c 2022-06-21 11:26 -0400 Joe Osborn │ o {fork/main} refactor: Move propagator options to general fitter options (#1282)
0029 7bf3981 2022-06-20 20:16 +0100 Scott Hurley │ o feat: Add Profiling Support with gperftools (#1274)
0030 4a21df3 2022-06-14 18:32 +0200 Paul Gessinger │ o fix: Add another compat fix for clang+libstdc++ (#1269)
0031 93c608d 2022-06-14 16:35 +0200 Paul Gessinger │ o ci: Retry nodeps build if it fails the first time (#1283)
0032 9920a81 2022-06-14 14:53 +0200 Paul Gessinger │ o ci: Reduce ccache limit to 150MB (#1270)
0033 baa4222 2022-06-14 10:16 +0200 Benjamin Huth │ o fix: Add missing dependency in Exa.TrkX plugin (#1276)
0034 adf079e 2022-06-08 12:47 +0000 github-actions[bot] o │ <v19.2.0> Bump to version v19.2.0
0035 4ee53fd 2022-06-08 14:46 +0200 Paul Gessinger M─│─┐ Merge branch main into releases
0036 f9a0979 2022-06-08 09:35 +0200 Noemi Calace │ o─┘ feat: Allow passing seed quality to seeds (#1268)
0037 8a2260b 2022-06-07 16:31 +0200 Alexander J. Pfleger │ o feat: RKN-monitoring to AtlasStepper, change type int->size_t (#1264)
0038 bd55ecb 2022-06-07 15:25 +0200 Noemi Calace │ o feat: configurable phi values in grid construction (#1275)
0039 29f3649 2022-06-07 14:22 +0200 Noemi Calace │ o fix: Fixing typo in name of variable and associated methods (#1277)
0040 239ece3 2022-06-03 17:39 +0200 robertlangenberg │ o bump macos dependencies (#1279)
0041 f77f377 2022-05-30 15:46 +0200 Noemi Calace │ o feat: Adding features for sorting space points in r in (phi, z) grid (#1267)
0042 a7ee09d 2022-05-25 11:17 +0200 Luis Falda Coelho │ o fix: Bug in xyz strip coordinates transformation (#1265)
0043 82f42a2 2022-05-25 09:02 +0000 github-actions[bot] o │ <v19.1.0> Bump to version v19.1.0
0044 7c59e12 2022-05-25 10:26 +0200 Paul Gessinger M─│─┐ Merge remote-tracking branch 'origin/main' into releases
0045 4ceddf3 2022-05-25 10:26 +0200 Luis Falda Coelho │ o─┘ feat: ITk seedFilter integration and seed quality confirmation (#1201)
0046 ```
0047
0048 You can now push the updated `releases` branch to the remote `releases` branch using `git push -u upstream releases`.
0049
0050 On push, a CI job should run and create an additional commit on the `releases` branch, which bumps a number of version numbers. That commit is going to be the one tagged with the correct version. It doesn't hurt to make sure that commit looks right, as in it bumps to a sensible next version number.
0051
0052
0053 ## Step 2: Prepare milestone
0054
0055 By convention, we assign all open PRs and issues to the `next` milestone. When a new release is cut, all closed issues and PRs are moved over to a dedicated milestone named after the next version number. To do this, go to the *Pull Requests* view on the main repository, and click *Milestones*:
0056
0057 :::{image} figures/release/milestones.png
0058 :width: 300px
0059 :alt: The milestones button
0060 :::
0061
0062 First, create a new milestone here. Name it `vX.Y.Z`, corresponding to the next version (you can check the release CI job mentioned above to determine this. The job will also create an unreleased GitHub *release* which should have the right name).
0063
0064 Next, go back to the list of milestones and go to the `next` milestone, and click on *closed* to get to a list of all closed PRs and issues assigned to it:
0065
0066 :::{image} figures/release/next_milestone.png
0067 :alt: The next milestone, which has a "closed" button
0068 :::
0069
0070 You'll be taken to a list view which shows all closed PRs and issues assigned to the `next` milestone. On the top left there should be a checkbox allowing you to select all visible items:
0071
0072 :::{image} figures/release/select_all_closed.png
0073 :alt: Checkbox to select all visible PRs and issues.
0074 :width: 200px
0075 :::
0076
0077 ```{note} The checkbox will only select the items on the visible page. If there are many items, it's possible you'll have to redo this step until it has been applied to all items.
0078 ```
0079
0080 Towards the right there's a button called *Milestone* which allows you to select a milestone to assign. Assign all closed items to the new milestone you created above.
0081
0082 :::{image} figures/release/milestone_drop.png
0083 :alt: Dropdown to assign the selected items to a new milestone
0084 :width: 300px
0085 :::
0086
0087 ## Step 3: Publish release
0088
0089 The release CI job should have created a draft release visible in the GitHub interface. If you navigate to the list of all releases, there should be an entry for this new release. You should
0090
0091 1. Inspect the auto-generated release note, and see if there are any obvious mistakes here that the job might have made.
0092 2. Check that the target commit hash, that the release will generate a tag for once published, actually corresponds to the commit on the `releases` branch that the CI job from before created.
0093 3. Click the *Publish* button to create the release.