|
| 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