@@ -77,6 +77,63 @@ This project is designed to be deployed as a secure static site using Amazon Clo
7777
7878We use [ HashiCorp Terraform] ( https://www.terraform.io/ ) to deploy this website.
7979
80+ ### Releasing
81+
82+ The recommended workflow is to release a new tagged version to the test site first,
83+ sanity-check it, then promote that same build to production.
84+
85+ ** 1. Tag and release to test** (requires ` VERSION ` in ` vX.Y.Z ` form):
86+
87+ ``` bash
88+ make release-live-update-to-testsliderule VERSION=v4.5.3
89+ ```
90+
91+ This step does all the version-stamping work:
92+
93+ 1 . ** Generates and commits the release notes** for the version from the git commit
94+ subjects since the previous tag, then creates and pushes the annotated ` vX.Y.Z `
95+ tag (` src-tag-and-push ` → ` VITE_VERSION.sh ` → ` gen-release-notes.sh ` ).
96+ 2 . ** Mirrors the notes to a GitHub Release** (` publish-gh-release.sh ` ). This step is
97+ non-fatal — if the ` gh ` CLI is missing or unauthenticated it warns and is skipped,
98+ so it never blocks a deploy.
99+ 3 . ** Builds and deploys** the client to ** testsliderule.org** — the tag is injected
100+ as ` VITE_APP_VERSION ` , assets are uploaded to S3, and CloudFront is invalidated.
101+
102+ Sanity-check the result at < https://client.testsliderule.org > .
103+
104+ ** 2. Promote the same tagged build to production:**
105+
106+ ``` bash
107+ make live-update-slideruleearth
108+ ```
109+
110+ This rebuilds the current checkout and deploys it to ** slideruleearth.io** . It does
111+ ** not** create a new tag — the build reads the existing tag via ` git describe --tags ` ,
112+ so the release notes and the GitHub Release are created exactly once, during step 1.
113+
114+ > A one-shot ` make release-live-update-to-slideruleearth VERSION=v4.5.3 ` also exists
115+ > (it tags and deploys straight to production), but the test-first workflow above is
116+ > recommended.
117+
118+ ### Release notes
119+
120+ Web-client release notes are maintained in this repo as one Markdown file per
121+ version under ` web-client/src/assets/content/release-notes/ ` (e.g. ` v4.5.3.md ` ).
122+ They are bundled into the client at build time and shown in the ** Web Client
123+ Releases** tab on the landing page (the ** SlideRule Releases** tab continues to
124+ show the platform/server notes from the docs site).
125+
126+ The release flow auto-generates a draft from the commits since the previous tag.
127+ To curate the notes before releasing, generate the draft first, edit it, then run
128+ the release (step 1 above) — an existing file is preserved (use ` --force ` to
129+ regenerate):
130+
131+ ``` bash
132+ make gen-release-notes VERSION=v4.5.3 # writes .../release-notes/v4.5.3.md
133+ # edit the generated file...
134+ make release-live-update-to-testsliderule VERSION=v4.5.3
135+ ```
136+
80137## License
81138
82139This project is licensed under the following University of Washington Open Source License - see the [ LICENSE] ( LICENSE ) file for details.
0 commit comments