Skip to content

Commit c0580c4

Browse files
authored
Merge pull request #56 from LibreSign/feat/release-process
feat: Document release process
2 parents 4299812 + 32c6db3 commit c0580c4

File tree

2 files changed

+145
-5
lines changed

2 files changed

+145
-5
lines changed

β€Ždeveloper_manual/index.rstβ€Ž

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,4 @@ Here you will find all the documentation for developers.
3131
getting-started/index
3232
api/index
3333
translation
34-
requesting-features
35-
reporting-bugs
36-
setup-environment
37-
branch-policies
38-
commits
34+
release-process
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
Release process
2+
===============
3+
4+
Resuming the steps:
5+
6+
1. Identify the next version number of all releases.
7+
2. Create the changelog of all branches that will be released.
8+
You will need to create the changelog in the :code:`CHANGELOG.md` file from the :code:`main` branch and then backport it to the stable branches.
9+
3. Make the necessary changes into the codebase to prepare the release.
10+
11+
.. note::
12+
You can use the :code:`[skip ci]` tag in the commit message to skip the CI checks for the backport PRs to make the process faster.
13+
14+
4. Create a pull request to the `main` branch with the changes that you made.
15+
5. After the CI finish with success and the PR is merged, backport the changes to the stable branches that will be released.
16+
6. After the backport PRs are merged, create the releases in GitHub.
17+
7. Verify that the GitHub Action that creates the packages and publish them in the Nextcloud App Store finish with success.
18+
8. Announce the release in the Telegram channel.
19+
20+
Version numbers
21+
---------------
22+
23+
- The version number follows **MAJOR.MINOR.PATCH**.
24+
- ``MAJOR`` aligns with the supported Nextcloud Server version.
25+
- ``MINOR`` is used for LibreSign feature releases.
26+
- ``PATCH`` is used for bug fixes or small improvements.
27+
28+
1. Go to Milestones in the LibreSign repository:
29+
30+
https://github.com/LibreSign/libresign/milestones
31+
32+
2. Identify what is the next patch version to be released.
33+
3. Look the closed items to identify if we have new features,
34+
35+
1. If is a major release, increment with :code:`1` the :code:`MAJOR` version and reset :code:`MINOR` and :code:`PATCH`.
36+
37+
.. note::
38+
We only create a major release when is created a new stable branch for a new Nextcloud major version.
39+
40+
2. To new features, increment with :code:`1` the ``MINOR`` version and reset ``PATCH`` to ``0``.
41+
3. To bug fixes, increment the ``PATCH`` version.
42+
43+
Stable branches
44+
---------------
45+
46+
Each **stable branch** in LibreSign corresponds to a specific Nextcloud **MAJOR** version.
47+
48+
For example: ``stable21`` is compatible with Nextcloud 21.
49+
50+
Release checklist
51+
-----------------
52+
53+
A new release starts by creating a GitHub issue with one of the following titles:
54+
55+
.. code-block:: plain
56+
57+
πŸš€ Release todo v20.1.9
58+
πŸš€ Release todo v20.1.9 and v21.1.8
59+
60+
In the body, paste and adapt the following template. Replace placeholders
61+
with the correct values as you progress through the steps.
62+
63+
.. code-block:: markdown
64+
65+
<!-- 1. Replace "20.1.9" with the version number e.g. "12.2.4" -->
66+
<!-- Replace "20.1.8" with the previous version number e.g. "12.2.3" -->
67+
<!-- 2. Replace "stable20" with the LibreSign minor branch name e.g. "stable22" -->
68+
## πŸ’Ί Preparation
69+
- [ ] Check there are no pending backports:
70+
- [ ] https://github.com/LibreSign/libresign/labels/backport-request
71+
- [ ] Check all milestones don't have priority issues still open
72+
<!-- Add above the link of stables that will be involved in this release process -->
73+
<!-- Get branches/versions to release from https://github.com/LibreSign/libresign/milestones -->
74+
- [ ] https://github.com/LibreSign/libresign/milestone/<!-- put here the milestone ID e.g. 318 -->
75+
- [ ] https://github.com/LibreSign/libresign/milestone/<!-- put here the milestone ID e.g. 319 -->
76+
- [ ] Check there are no important PRs open against the branch
77+
<!-- Add above the link with correct base branch of stables that will be involved in this release process -->
78+
<!-- Get branches/versions to release from https://github.com/LibreSign/libresign/milestones -->
79+
- [ ] https://github.com/LibreSign/libresign/pulls?q=is%3Apr+is%3Aopen+base%3Astable20
80+
- [ ] https://github.com/LibreSign/libresign/pulls?q=is%3Apr+is%3Aopen+base%3Astable22
81+
- [ ] List all PRs that will be added to the changelog
82+
- [ ] Go to https://github.com/LibreSign/libresign/releases/new
83+
- [ ] Click at the button to create a new release draft with the next version number
84+
- [ ] At the tag field, type the next version number, e.g. `v20.1.9`
85+
- [ ] Select the base branch, e.g. `stable20`
86+
- [ ] Click at the button to **Generate release notes**
87+
- [ ] Go to the main branch, pull the latest changes and create a new branch called `chore/changelog`
88+
- [ ] Add the changelog entries to the `CHANGELOG.md` file, following the pattern used in the file.
89+
- [ ] Make this to all releases that will be done in this process.
90+
- [ ] Create a PR against `main` branch at the `CHANGELOG.md` file with the changelog of all milestones that are subject to the release. Look the pattern used in the file and follow it.
91+
You can use the :code:`[skip ci]` tag in the commit message to skip the CI checks for the backport PRs to make the process faster.
92+
<!-- name suggestions to commit and pull request:
93+
chore(release): Changelog for 20.1.9
94+
chore(release): Changelog for 20.1.9 and 20.1.8
95+
-->
96+
- [ ] <!-- Add link to PR here -->
97+
- [ ] Merge the PR
98+
<!-- Duplicate the follow steps for each version that will be released, starting with the oldest version. -->
99+
<!-- Pay attention to start with the **oldest** version here, so the appstore and github releases show the newest version as "Last release" and them. -->
100+
<!-- Replace "XX" with the Nextcloud stable branch number e.g. "22" for "stable22" -->
101+
<!-- 1. Replace "20.1.9" with the version number e.g. "12.2.4" -->
102+
<!-- Replace "20.1.8" with the previous version number e.g. "12.2.3" -->
103+
<!-- 2. Replace "stable20" with the LibreSign minor branch name e.g. "stable22" -->
104+
## πŸš€ v20.1.9
105+
- [ ] Backport the changelog from main to the stable branches
106+
- [ ] <!-- Add link to PR here -->
107+
<!-- At the backport PR, do the following steps: -->
108+
- [ ] Remove changelog entries in `CHANGELOG.md` of higher versions
109+
- [ ] Bump the version in `appinfo/info.xml`
110+
- [ ] Bump the version in `package.json` and in `package-lock.json`. The following command will return a new version name, make sure it matches what you expect:
111+
```sh
112+
# Make sure the printed version matches the info.xml version
113+
npm version --no-git-tag-version $(xmllint --xpath '/info/version/text()' appinfo/info.xml)
114+
```
115+
- [ ] Merge the backport
116+
- [ ] Do a quick smoke test signing documents with:
117+
- [ ] Chrome
118+
- [ ] Edge
119+
- [ ] Firefox
120+
- [ ] Safari
121+
- [ ] Create the new milestone
122+
- [ ] Rename milestone `πŸ’š Next Patch (XX)` to `v20.1.9` in https://github.com/LibreSign/libresign/milestones
123+
Unless last release of the stable branch:
124+
- [ ] Create a follow up milestone for `πŸ’š Next Patch (XX)` (Due date in ~4 weeks, ~4 days for beta/RC)
125+
- [ ] Move all open PRs and issues from milestone `v20.1.9` to `πŸ’š Next Patch (XX)`: https://github.com/LibreSign/libresign/issues?q=is%3Aissue%20state%3Aopen%20milestone%3Av20.1.9
126+
- [ ] Move all open PRs and issues from milestone `v20.1.9` to `πŸ’š Next Patch (XX)`: https://github.com/LibreSign/libresign/issues?q=is%3Apr%20state%3Aopen%20milestone%3Av20.1.9
127+
- [ ] Close the `v20.1.9` milestone
128+
- [ ] Archive all issues and PRs that were merged in this release
129+
- [ ] https://github.com/orgs/LibreSign/projects/2/views/4
130+
- [ ] Create a new release
131+
- [ ] Prepare a (pre-)release in https://github.com/LibreSign/libresign/releases/new?tag=v20.1.9&target=stable20
132+
- [ ] Make sure that chosen tag is v20.1.9, target is stable20, and previous tag is v20.1.8
133+
- [ ] Add the content of respective `CHANGELOG.md` section from merged PR
134+
- [ ] Use the **Generate release notes** button and wrap the output result into
135+
```
136+
## What's Changed
137+
<!-- Add the content of the changelog section here -->
138+
139+
Milestone: [v20.1.9](<!-- Add the link to the closed milestone here -->)
140+
**Full Changelog**: https://github.com/LibreSign/libresign/compare/v20.1.9...v20.1.8
141+
- [ ] Publish release
142+
- [ ] Check that the GitHub Action started: https://github.com/LibreSign/libresign/actions
143+
- [ ] Ensure that the GitHub Action finished successfully: https://github.com/LibreSign/libresign/actions
144+
- [ ] Post the changelog in [πŸ’¬ LibreSign team public πŸ‘₯](https://t.me/LibreSign)

0 commit comments

Comments
Β (0)