File: RELEASING.md

package info (click to toggle)
tango 10.0.2%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 89,936 kB
  • sloc: cpp: 201,786; sh: 1,645; python: 953; java: 800; perl: 467; javascript: 447; xml: 325; makefile: 272; sql: 72; ruby: 24
file content (69 lines) | stat: -rw-r--r-- 2,677 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
## Release process

We are using timed releases with a new release every 6 months (2nd April/2nd
October).

To document the progress it is easiest to copy everything below into an issue.

<!-- start of issue -->

### When the previous release branch is created:

- [ ] Raise the library version (`MAJOR_VERSION`/`MINOR_VERSION`/`PATCH_VERSION`
in CMakeLists.txt) on `main`
- [ ] Tag the commit where the library version is raised as `$major.$minor.$patch-dev`

### At the beginning of the 6 month release cycle:

- [ ] Appoint a release manager who is responsible for the release process
      and create the release issue with the contents of this document between
      the `start of issue`/`end of issue` comments
- [ ] Create a milestone with due date
- [ ] Fill the milestone with issues
- [ ] If the next release is a major release and will break API/ABI make the
      responsible CI job non-fatal, see fd8cbddf (.gitlab-ci.yml: Allow failures
      for the ABI-API check, 2023-05-25) for an example

### 6 weeks before the release date:

- [ ] Create an issue to update RELEASE_NOTES.md and assign it to someone else
- [ ] Announce (slack: `kernel`) that there are two weeks left before the first release candidate
- [ ] \(TSD maintainer\) Update TSD/distribution.properties to see if it works
      with cppTango
- [ ] \(TSD maintainer\) Create issues for all dependent subprojects and ask for an update

### 4 weeks before the release date:

- [ ] Create a release branch named `release/$major.$minor.$patch` off `main`. From
      now on all merge requests for this release have to be done against this branch.
- [ ] Change the target branch of all MRs which should be part of this release to the new
      release branch
- [ ] Disable the `pages` job on the `main` branch

#### RC phase:

- [ ] Tag the repo (`$major.$minor.$patch-rc$X`), this automatically creates a
      release and uploads the windows packages
- [ ] \(TSD maintainer\) Update TSD to use the new tag, merge it and tag as well
- [ ] Advertise the new release candidate on the `tango-info` mailing list and slack (channel: `general`)

During the RC phase it is advisable to only merge non-intrusive MRs to avoid
the possibility of last-minute regressions.

Creating a new release candidate should be redone every week when more MRs have been merged.

### At the release date:

All steps from the release candidate phase above:

- [ ] Tag the release (`$major.$minor.$patch`)
- [ ] Update for TSD
- [ ] Advertise new release

and finally

- [ ] Delete release branch
- [ ] Revert the API/ABI non-fatal CI change if required
- [ ] Allow the `pages` job to run on `main` again

<!-- end of issue -->