Skip to content

ci: auto-publish importable Chrome/Firefox packages to a rolling "latest" release - #4

Merged
ridaken merged 1 commit into
mainfrom
feat/ci-rolling-release
Jun 26, 2026
Merged

ci: auto-publish importable Chrome/Firefox packages to a rolling "latest" release#4
ridaken merged 1 commit into
mainfrom
feat/ci-rolling-release

Conversation

@ridaken

@ridaken ridaken commented Jun 26, 2026

Copy link
Copy Markdown
Owner

What

Adds a publish job to the CI workflow so that every merge to main produces ready-to-import extension packages, attached to a single rolling latest GitHub pre-release. Users always have a stable URL for the freshest build: …/releases/latest.

How it works

After the existing check job (typecheck → unit tests → both browser builds) succeeds on a push to main, the new job:

  1. Runs wxt zip for Chrome (MV3) and wxt zip -b firefox (MV2).
  2. Deletes + recreates the latest pre-release, re-pointing the latest tag at the exact commit that was built.
  3. Attaches glance-*-chrome.zip and glance-*-firefox.zip.

Decisions

  • Gated on CI via needs: check — a failing build is never published.
  • PR-safeif: github.event_name == 'push' && github.ref == 'refs/heads/main', so PRs (incl. forks) never trigger it.
  • Least privilege — top-level stays contents: read; only publish gets contents: write.
  • Excludes the Firefox AMO sources zip (glance-*-sources.zip) — it's for store review, not installation.

Notes

  • package.json version is still 0.0.0, so zip filenames don't differentiate builds; the release notes include the short commit SHA to disambiguate.
  • The existing release.yml (manual, versioned releases) is left untouched and complements this rolling build.
  • This only takes effect once merged, since GitHub runs the workflow definition on main.

🤖 Generated with Claude Code

…merge to main

Add a `publish` job to the CI workflow that, after the existing checks
pass on a push to main, zips the Chrome (MV3) and Firefox (MV2) builds
and attaches them to a single rolling `latest` pre-release. The tag is
re-pointed at the built commit on each run so the release always carries
the freshest importable extension packages.

- Gated on the `check` job succeeding (typecheck, tests, both builds)
- Runs only on push to main, never on pull requests
- Scoped `contents: write` only on the publish job
- Excludes the Firefox AMO sources zip (not an installable artifact)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ridaken
ridaken merged commit fc98aab into main Jun 26, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant