From 4927ad8bb7b1db86c28566623eafcd0009734794 Mon Sep 17 00:00:00 2001 From: pajlada Date: Sun, 21 Sep 2025 11:38:21 +0200 Subject: [PATCH] Update release documentation (#6472) --- docs/make-beta.md | 134 +++++++++++++++++++++++++++++++++++++++++++ docs/make-release.md | 131 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 257 insertions(+), 8 deletions(-) create mode 100644 docs/make-beta.md diff --git a/docs/make-beta.md b/docs/make-beta.md new file mode 100644 index 00000000..a1a4f0bf --- /dev/null +++ b/docs/make-beta.md @@ -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 + + + + + https://github.com/Chatterino/chatterino2/releases/tag/v2.3.4-beta.1 + + + + https://github.com/Chatterino/chatterino2/releases/tag/v2.3.3 + + ``` + +- [ ] 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 diff --git a/docs/make-release.md b/docs/make-release.md index 774fee6b..9cf7fc50 100644 --- a/docs/make-release.md +++ b/docs/make-release.md @@ -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 + + + + + https://github.com/Chatterino/chatterino2/releases/tag/v2.3.4 + + + + https://github.com/Chatterino/chatterino2/releases/tag/v2.3.4-beta.1 + + ``` - [ ] 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