|
|
@@ -1,6 +1,6 @@
|
|
|
---
|
|
|
name: qmai-release
|
|
|
-description: Release a stable QMAI version by updating version metadata and changelog, pushing main, waiting for the same-commit main CI release-cache warmup, then creating and pushing an annotated version tag. Use when asked to bump, publish, or tag a QMAI stable release; do not use for prerelease builds or ordinary PR delivery.
|
|
|
+description: Release a stable QMAI version by updating version metadata and changelog, pushing main, then creating and pushing an annotated version tag. Use when asked to bump, publish, or tag a QMAI stable release; do not use for prerelease builds or ordinary PR delivery.
|
|
|
---
|
|
|
|
|
|
# QMAI Stable Release
|
|
|
@@ -10,8 +10,8 @@ Use this workflow only in the `Mochocyang/QMAI` repository. Preserve the user's
|
|
|
## Release invariants
|
|
|
|
|
|
- Push the release commit to `main` by itself. Never push `main` and the version tag in one command or atomic push.
|
|
|
-- Wait for the `CI` workflow on the exact release commit to finish successfully before creating the tag. This allows the Linux, Windows, and macOS release-cache warmup to complete.
|
|
|
-- Never create the tag while required validation or the matching main CI run is failing, cancelled, missing, or still running.
|
|
|
+- Do not wait for main CI before tagging. Main CI does not compile release binaries; only the tag workflow does.
|
|
|
+- Never create the tag while local required validation is failing.
|
|
|
- Never overwrite, move, or force-push `main` or a release tag.
|
|
|
- Stop if `origin/main` moves away from the release commit before tagging. Reconcile the new remote state instead of tagging an older commit.
|
|
|
- Use an annotated tag named `v<package-version>` and verify that the remote tag resolves to the release commit.
|
|
|
@@ -46,18 +46,13 @@ Use this workflow only in the `Mochocyang/QMAI` repository. Preserve the user's
|
|
|
- Re-fetch `origin/main` immediately before pushing and confirm it is the release commit's parent.
|
|
|
- Push only `main`. Record the exact release commit SHA.
|
|
|
|
|
|
-5. Wait for cache warmup on the exact release SHA.
|
|
|
- - Find the `CI` workflow run whose event is `push`, branch is `main`, and head SHA equals the release SHA.
|
|
|
- - Wait with `gh run watch <run-id> --repo Mochocyang/QMAI --exit-status`.
|
|
|
- - Stop if no matching run appears within 5 minutes, the run does not complete within 90 minutes, or its conclusion is not `success`.
|
|
|
-
|
|
|
-6. Tag only after CI succeeds.
|
|
|
+5. Tag after `main` is on the release commit.
|
|
|
- Fetch `origin/main` and tags again.
|
|
|
- Require local `HEAD`, `origin/main`, and the recorded release SHA to match.
|
|
|
- Reconfirm that `v<version>` does not exist.
|
|
|
- Create an annotated tag on the recorded SHA, then push only that tag in a separate command.
|
|
|
|
|
|
-7. Verify delivery.
|
|
|
+6. Verify delivery.
|
|
|
- Verify remote `main` and the dereferenced remote tag both resolve to the recorded release SHA.
|
|
|
- Confirm `QMAI Multi-Platform Release` started for that tag and SHA.
|
|
|
- Report the release workflow URL and current status. Do not claim release completion while jobs or required assets are pending.
|