Repository navigation
ci(release): three-tier release automation #524
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
9b94511
ci(release): three-tier release pipeline, consolidated workflows
16bit-ykiko fd90710
feat(support): stamp version and target in logs
16bit-ykiko 9a6e229
docs: add release process command
16bit-ykiko 36596aa
fix(release): review follow-ups for staging and tests
16bit-ykiko 7baaba3
fix(release): nightly version fidelity and channel rollover
16bit-ykiko dee392e
docs: document release channels in readmes
16bit-ykiko d2ffd43
fix(release): address review-bot findings
16bit-ykiko d1d8af1
fix(release): least-privilege secrets and dirty tag stamping
16bit-ykiko 35cd936
fix(release): strip instant binaries, gate uploads on push
16bit-ykiko 27c09f9
fix(release): portable strip flags for instant builds
16bit-ykiko File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| Operate the three-tier release process: instant builds, nightlies, and stable releases. | ||
|
|
||
| ## Versioning | ||
|
|
||
| One version number everywhere: git tag `vX.Y.Z` == extension version == release | ||
| page. Odd minor = pre-release channel, even minor = stable (the VS Code | ||
| Marketplace convention). Nightlies compute `X.<odd>.YYMMDDHH` (UTC hour) on the | ||
| odd minor above the newest release — `0.1.*` today, `0.3.*` after stable | ||
| `v0.2.0` — so nobody edits version numbers by hand. The versions in `CMakeLists.txt`, `pixi.toml`, | ||
| and `editors/vscode/package.json` are permanent placeholders (`0.1.0`); the | ||
| real version is injected from the tag at build time (binary via git describe, | ||
| vsix via CI). A local `vsce publish` with the placeholder is rejected by the | ||
| Marketplace — that is intentional accident protection. | ||
|
|
||
| ## Tier 1 — Instant builds (every green CI run) | ||
|
|
||
| Nothing to operate. Every `main` push and PR run repackages the test-suite | ||
| binaries (no LTO, no strip) into `vsix-build-<target>` workflow artifacts, and | ||
| the raw binaries are in `native-build-*` / `cross-build-*` artifacts. To hand a | ||
| fix to a user: point them at the run's artifact (GitHub login required), or | ||
| have them set `clice.executable` to the extracted binary. | ||
|
|
||
| ## Tier 2 — Nightly (pre-release channel) | ||
|
|
||
| `nightly.yml` runs daily (cron) or via `gh workflow run nightly.yml`: | ||
| skips when main has no new commits, otherwise tags the nightly version, builds the | ||
| full release matrix (ICF + strip + GSYM symbols), publishes a GitHub | ||
| pre-release and Marketplace `--pre-release`, and prunes odd-minor pre-releases | ||
| older than 30 days. A failed nightly just means no nightly that day — fix main | ||
| and rerun via dispatch. | ||
|
|
||
| ## Tier 3 — Stable release (manual, even minor) | ||
|
|
||
| 1. Freeze: stop merging features; the last nightlies of the freeze are the RCs. | ||
| 2. When a nightly is judged good, tag its commit: `git tag v0.2.0 <commit> && git push origin v0.2.0`. | ||
| The tag push runs the release path of `main.yml` (packages + extensions, | ||
| Marketplace without `--pre-release`). | ||
| 3. Write the release notes on the GitHub release page (the download table | ||
| format from the nightly notes is a good template). | ||
| 4. Verify: assets present (6 packages + 4 symbol archives + 2 PDB zips + | ||
| 6 vsix), Marketplace shows the new stable version. | ||
|
|
||
| ## Dry run / plumbing changes | ||
|
|
||
| PRs touching release plumbing (publish workflows, `cmake/release.cmake`, | ||
| `cmake/archive.cmake`, `CMakeLists.txt`) automatically run the full 6+6 dry | ||
| run via the `release-check-*` jobs; `gh workflow run main.yml --ref <branch>` | ||
| does the same on demand. Uploads stay tag-gated, so nothing publishes. | ||
|
|
||
| ## Crash log support | ||
|
|
||
| Ask the user for the log (worker `.log` from the workspace `.clice/logs/` or | ||
| the cache dir). The crash section starts with `clice <version> <target>` — | ||
| download that release's `*-symbol.tar.xz` (GSYM) and run: | ||
|
|
||
| ```bash | ||
| python scripts/symbolize.py crash.log --symbols clice.gsym | ||
| ``` | ||
|
|
||
| For core-dump-level debugging, fetch the full DWARF from the release run's | ||
| `debug-info-*` workflow artifact (90-day retention). If the log predates the | ||
| version line or the release was pruned, symbolization is not possible — ask | ||
| the user to reproduce on a current nightly. | ||
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.