From 792f778fe63941086df62b50fdf08908bd49f350 Mon Sep 17 00:00:00 2001 From: GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> Date: Thu, 12 Oct 2023 18:18:33 +0200 Subject: Add rough outline specifying release process (#240) This is a rough outline without specific detail. The process always changes too so this page will likely need constant updating to avoid turning stale. --- docs/development/releases.md | 63 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/docs/development/releases.md b/docs/development/releases.md index 65b19ca..5908db8 100644 --- a/docs/development/releases.md +++ b/docs/development/releases.md @@ -20,6 +20,69 @@ Therefore make sure to push tags of Mods and Launcher first (and make sure Launc CI also pushes release directly to Thunderstore as a mod called [`Northstar`](https://northstar.thunderstore.io/package/northstar/Northstar/). \ If it's a release-candidate with the `-rcX` suffix, it will instead get pushed to Thunderstore as [`NorthstarReleaseCandidate`](https://northstar.thunderstore.io/package/northstar/NorthstarReleaseCandidate/). +### The process of making a release: + +The following is a rough draft of the steps needed to make a release. +The process is ever changing in order to simplify it so these steps outlined might not be up-to-date anymore depending on when you are reading this. + +The current process of making release (includinging release candidate) is: + +1. Make release branch (`MAJOR.MINOR.X`) (if not exists) + +2. Merge desired commits from `main` + - Make sure to consider whether changing are breaking in regards to older/newer server/client and in regards to Squirrel API. + - Older/newer client/server breakage might need to be version gated and should **NOT** be done in patch releases. + - Squirrel API changes likely breaks mods and should **NOT** be done in patch releases. Additionaly make sure to ping modders on release or preferably even in advance. + - If changes can be merged fast-forward use `git merge --ff-only origin/main` otherwise cherry-pick relevant commits. + +3. Make release candidate\ + Push tags ending in `-rcX` where `X` is integer for + 1. Launcher + 2. Mods + 3. Release (wait until launcher has finished building) + +4. Make draft notes\ + You can use FlightCore to generate them and then format them manually.\ + If you use FlightCore make sure to remove already released commits if they were cherry-picked. + +5. Create a draft discussion in [release repo discussions](https://github.com/R2Northstar/Northstar/discussions) + +6. Make related github-org thread and link the draft notes there for feedback etc + +7. Ping playtesters to test release candidate. + 1. Add information about what specific aspect to test. + 2. Copy relevant changes for this release candidate from draft release notes. + 3. Link draft release notes. + 4. Make thread to leave feedback about release in. + +8. Wait until release candidate was sufficiently tested. + +9. Make release + Push tags for + 1. Launcher + 2. Mods + 3. Release (wait until launcher has finished building) + +10. Once release has finished building + 1. Go to GitHub release and select the new unpublished release + 2. Copy release notes from draft. + 3. Click checkbox for creating discussion and select _Release_ as category + 4. Publish + +11. Post announcements on Discord + 1. Post message in `#server-hosting-announcements` channel.\ + Make sure to highlight server hosting specific changes.\ + Make thread for bug reports. + 2. Post message in `#modding-announcements`.\ + Make sure to highlight modding specific changes (API changes etc). + 3. Post message in `#announcements`.\ + Make sure to highlight end-user specific changes (new features, certainn fixes, etc). + + +12. Update main menu promos version on Atlas + +13. Observe version roll-out via [Grafana dashboard](https://northstar-stats.frontier.tf/). + ### Git commands for tags: **For release candidates:** -- cgit v1.2.3