Rough notes on the steps we follow when making an SML release.
-
Add things demonstrating/testing new features to Example Mod and SMLFeatureTests when relevant
-
Ensure docs repository is updated (on https://docs-dev.ficsit.app/, at least)
-
Write version-specific Updating Guide on the docs when relevant
-
Write draft release changelog on GitHub, following the format from the previous release
-
Ensure SML VS project and mod compiles on a developer machine
-
Ensure the CI passes on the
devbranch -
Open a SML PR of
devtomasterand get approvals -
Update the docs versions
-
After merging the PR, commit on master a
Bump versioncommit- SML.uplugin GameVersion and SemVersion
- ExampleMod.uplugin GameVersion and SML dependency version
-
Wait for CI to finish. We don't upload locally compiled versions so the version detailed suffix is consistent across versions. We want the CI result of the commit on
master, so cancel the CI runs for thedevthat probably started when those were pushed to save time. -
While waiting for CI to finish:
- Merge the docs PR to master
- Update SMLFeatureTests SML dependency version
-
Upload CI artifact to GitHub as release. Attach all of the CI zip file contents as release items (Windows (Client), Windows Server, Linux Server, SML (multi-target))
-
Upload CI artifact to SMR as a new version of the SML mod (multi-target zip file), SMR changelog is the GitHub changelog
-
Post in #toolkit-updates and/or #announcements on Discord
-
Clear/create ficsit.app announcements as needed
-
Get a token from your browser cookies after logging into ficsit.app
-
Set headers to:
{ "Authorization": "your_token_here", }
-
To get active announcements, use:
{ getAnnouncements { importance message id } } -
To create an announcement, use:
# Query mutation CreateAnnouncement($announcement: NewAnnouncement!) { createAnnouncement(announcement: $announcement) { id message importance } } # Variables { "announcement": { "message": "Hello World", "importance": "Info" } }
-
To delete an announcement, use:
# Query mutation DeleteAnnouncement($id: AnnouncementID!) { deleteAnnouncement(announcementId: $id) } # Variables { "id": "idFromGetGoesHere" }
-