Update release documentation (#6472)

This commit is contained in:
pajlada
2025-09-21 11:38:21 +02:00
committed by GitHub
parent a40debb8ee
commit 4927ad8bb7
2 changed files with 257 additions and 8 deletions
+134
View File
@@ -0,0 +1,134 @@
# Checklist for making a beta release (e.g. 2.3.4-beta.1)
I will be using `2.3.4-beta.1` as the example release in this document.
## In the release PR
- [ ] Updated version code in `src/common/Version.hpp`
```diff
- inline const QString CHATTERINO_VERSION = QStringLiteral("2.3.3");
+ inline const QString CHATTERINO_VERSION = QStringLiteral("2.3.4-beta.1");
```
- [ ] Updated version code in `CMakeLists.txt`
This can only be "whole versions", so we have to "round it" to the next stable release.
```diff
project(chatterino
- VERSION 2.3.3
+ VERSION 2.3.4
DESCRIPTION "Chat client for twitch.tv"
HOMEPAGE_URL "https://chatterino.com/"
)
```
- [ ] Add a new release at the top of the `releases` key in `resources/com.chatterino.chatterino.appdata.xml`
The format for beta releases here differs, you have to use a tilde instead, and omit the period before the beta number.
```diff
<releases>
+ <release version="2.3.4~beta1" date="2020-02-02">
+ <url>https://github.com/Chatterino/chatterino2/releases/tag/v2.3.4-beta.1</url>
+ </release>
<release version="2.3.3" date="2020-01-01">
<url>https://github.com/Chatterino/chatterino2/releases/tag/v2.3.3</url>
</release>
```
- [ ] Updated version code in `.CI/chatterino-installer.iss`
This can only be "whole versions", so we have to "round it" to the next stable release.
```diff
#define MyAppName "Chatterino"
- #define MyAppVersion "2.3.3"
+ #define MyAppVersion "2.3.4"
#define MyAppPublisher "Chatterino Team"
```
- [ ] Update the changelog `## Unversioned` section to the new version `CHANGELOG.md`
Make sure to leave the `## Unversioned` line unchanged for easier merges
```diff
# Changelog
## Unversioned
+
+ ## 2.3.4-beta.1
- Bugfix: Foo (#1)
```
## After the PR has been merged
- [ ] Tag the release
Ensure you're on the correct release locally
```sh
git tag v2.3.4-beta.1 --annotate --message v2.3.4-beta.1
git push origin v2.3.4-beta.1
```
- [ ] Manually run the [create-installer](https://github.com/Chatterino/chatterino2/actions/workflows/create-installer.yml) workflow.
This is only necessary if the tag was created after the CI in the main branch finished.
- [ ] Ensure changelog on website is up-to-date
## After all GitHub actions have ran
### Prepare the binaries
- [ ] Make a new directory in your `chatterino-releases` directory
- [ ] Find the Create installer action for the release-tagged commit and download:
- `Chatterino.Installer.exe`
- [ ] Find the Build action for the release-tagged commit and download:
- `Chatterino-ubuntu-20.04-*.deb`, renamed to `Chatterino-Ubuntu-20.04.deb`
- `Chatterino-ubuntu-22.04-*.deb`, renamed to `Chatterino-Ubuntu-22.04.deb`
- `Chatterino-ubuntu-24.04-*.deb`, renamed to `Chatterino-Ubuntu-24.04.deb`
- `chatterino-windows-x86-64-*-symbols.pdb.7z`, renamed to `Chatterino-Windows-debug-symbols.pdb.7z`
- `chatterino-windows-x86-64-*.zip`
- [ ] Massage the portable release:
- Unzip `chatterino-windows-x86-64-*.zip`
- Edit the `modes` file to say `portable` and nothing else
- Copy the `updater.1` directory from an old portable release. Tree structure should look like this:
```
Chatterino2
├── chatterino.exe
...
├── updater.1
│   ├── ChatterinoUpdater.exe
│   ├── ICSharpCode.SharpZipLib.dll
│   └── SharpZipLib_LICENSE.txt
...
```
- Zip up the portable release again:
```sh
zip -r Chatterino.Portable.zip Chatterino2
```
- [ ] create a SHA256 checksum file:
```sh
sha256sum * > sha256-checksums.txt
```
- [ ] Verify release structure
```
.
├── Chatterino-10.15.dmg
├── Chatterino.dmg
├── Chatterino.Installer.exe
├── Chatterino.Portable.zip
├── Chatterino-Ubuntu-20.04.deb
├── Chatterino-Ubuntu-22.04.deb
├── Chatterino-Ubuntu-24.04.deb
├── Chatterino-Windows-debug-symbols.pdb.7z
└── sha256-checksums.txt
```
- [ ] Notarize the macOS releases
```sh
xcrun notarytool submit Chatterino-10.15.dmg --wait --keychain-profile notarytool-password --keychain / Users/pajlada/Library/Keychains/chatterino-2025.keychain-db
...
xcrun notarytool submit Chatterino.dmg --wait --keychain-profile notarytool-password --keychain / Users/pajlada/Library/Keychains/chatterino-2025.keychain-db
...
```
### Creating the release
- [ ] Create a GitHub release & upload all files in your release directory
- [ ] Link the release to fourtf and ask him to start the release process from his end
+123 -8
View File
@@ -1,31 +1,146 @@
# Checklist for making a release
# Checklist for making a stable release (e.g. 2.5.4)
I will be using `2.3.4` as the example release in this document.
## In the release PR
- [ ] Updated version code in `src/common/Version.hpp`
```diff
- inline const QString CHATTERINO_VERSION = QStringLiteral("2.3.4-beta.1");
+ inline const QString CHATTERINO_VERSION = QStringLiteral("2.3.4");
```
- [ ] Updated version code in `CMakeLists.txt`
This can only be "whole versions", so if you're releasing `2.4.0-beta` you'll need to condense it to `2.4.0`
If you made a beta release, this step will not be necessary.
```diff
project(chatterino
- VERSION 2.3.3
+ VERSION 2.3.4
DESCRIPTION "Chat client for twitch.tv"
HOMEPAGE_URL "https://chatterino.com/"
)
```
- [ ] Add a new release at the top of the `releases` key in `resources/com.chatterino.chatterino.appdata.xml`
This cannot use dash to denote a pre-release identifier, you have to use a tilde instead.
The format for beta releases here differs, you have to use a tilde instead, and omit the period before the beta number.
```diff
<releases>
+ <release version="2.3.4" date="2020-02-03">
+ <url>https://github.com/Chatterino/chatterino2/releases/tag/v2.3.4</url>
+ </release>
<release version="2.3.4~beta1" date="2020-02-02">
<url>https://github.com/Chatterino/chatterino2/releases/tag/v2.3.4-beta.1</url>
</release>
```
- [ ] Updated version code in `.CI/chatterino-installer.iss`
This can only be "whole versions", so if you're releasing `2.4.0-beta` you'll need to condense it to `2.4.0`
If you made a beta release, this step will not be necessary.
```diff
#define MyAppName "Chatterino"
- #define MyAppVersion "2.3.3"
+ #define MyAppVersion "2.3.4"
#define MyAppPublisher "Chatterino Team"
```
- [ ] Update the changelog `## Unversioned` section to the new version `CHANGELOG.md`
Make sure to leave the `## Unversioned` line unchanged for easier merges
- [ ] Ensure all GitHub API credentials from the `chatterino-ci` user are still valid
```diff
# Changelog
## Unversioned
+
+ ## 2.3.4
- Bugfix: Foo (#2)
```
## After the PR has been created
- [ ] Ensure all GitHub API credentials from the `chatterino-ci` user are still valid
TODO: Add steps for how you can validate this, and for how to recreate the credentials. Also probably what exact credentials we need
## After the PR has been merged
- [ ] Tag the release
- [ ] Tag the release
Ensure you're on the correct release locally
```sh
git tag v2.3.4 --annotate --message v2.3.4
git push origin v2.3.4
```
- [ ] Manually run the [create-installer](https://github.com/Chatterino/chatterino2/actions/workflows/create-installer.yml) workflow.
This is only necessary if the tag was created after the CI in the main branch finished.
- [ ] **Stable release only** If the winget releaser action doesn't work as expected, you can run this manually using [Komac](https://github.com/russellbanks/Komac), replacing `v2.5.2` with the current release:
- [ ] If the winget releaser action doesn't work as expected, you can run this manually using [Komac](https://github.com/russellbanks/Komac), replacing `v2.5.2` with the current release:
`komac update ChatterinoTeam.Chatterino --version 2.5.2 --urls https://github.com/Chatterino/chatterino2/releases/download/v2.5.2/Chatterino.Installer.exe`
- [ ] Ensure changelog on website is up-to-date
## After all GitHub actions have ran
### Prepare the binaries
- [ ] Make a new directory in your `chatterino-releases` directory
- [ ] Find the Create installer action for the release-tagged commit and download:
- `Chatterino.Installer.exe`
- [ ] Find the Build action for the release-tagged commit and download:
- `Chatterino-ubuntu-20.04-*.deb`, renamed to `Chatterino-Ubuntu-20.04.deb`
- `Chatterino-ubuntu-22.04-*.deb`, renamed to `Chatterino-Ubuntu-22.04.deb`
- `Chatterino-ubuntu-24.04-*.deb`, renamed to `Chatterino-Ubuntu-24.04.deb`
- `chatterino-windows-x86-64-*-symbols.pdb.7z`, renamed to `Chatterino-Windows-debug-symbols.pdb.7z`
- `chatterino-windows-x86-64-*.zip`
- [ ] Massage the portable release:
- Unzip `chatterino-windows-x86-64-*.zip`
- Edit the `modes` file to say `portable` and nothing else
- Copy the `updater.1` directory from an old portable release. Tree structure should look like this:
```
Chatterino2
├── chatterino.exe
...
├── updater.1
│   ├── ChatterinoUpdater.exe
│   ├── ICSharpCode.SharpZipLib.dll
│   └── SharpZipLib_LICENSE.txt
...
```
- Zip up the portable release again:
```sh
zip -r Chatterino.Portable.zip Chatterino2
```
- [ ] create a SHA256 checksum file:
```sh
sha256sum * > sha256-checksums.txt
```
- [ ] Verify release structure
```
.
├── Chatterino-10.15.dmg
├── Chatterino.dmg
├── Chatterino.Installer.exe
├── Chatterino.Portable.zip
├── Chatterino-Ubuntu-20.04.deb
├── Chatterino-Ubuntu-22.04.deb
├── Chatterino-Ubuntu-24.04.deb
├── Chatterino-Windows-debug-symbols.pdb.7z
└── sha256-checksums.txt
```
- [ ] Notarize the macOS releases
```sh
xcrun notarytool submit Chatterino-10.15.dmg --wait --keychain-profile notarytool-password --keychain / Users/pajlada/Library/Keychains/chatterino-2025.keychain-db
...
xcrun notarytool submit Chatterino.dmg --wait --keychain-profile notarytool-password --keychain / Users/pajlada/Library/Keychains/chatterino-2025.keychain-db
...
```
### Creating the release
- [ ] Create a GitHub release & upload all files in your release directory
- [ ] Link the release to fourtf and ask him to start the release process from his end
## After the binaries have been uploaded to fourtf's bucket
- [ ] **Stable release only** Re-run the Publish Homebrew Cask on Release action
- [ ] Re-run the Publish Homebrew Cask on Release action
- [ ] Update links in the Chatterino website to point to the new release