Skip to content

ci: build and release both extensions with release-please - #4

Merged
kermitsxb merged 4 commits into
feat/firefox-extensionfrom
ci/release-workflow
Oct 1, 2026
Merged

kermitsxb merged 4 commits into
feat/firefox-extensionfrom
ci/release-workflow

Conversation

@kermitsxb

@kermitsxb kermitsxb commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Stacked on #3 (Firefox extension).

Summary

.github/workflows/release.yml:

  • build (runs on PRs and pushes to main): npm ci, test, typecheck and lint:firefox (which builds first). It uploads the Chrome zip and the unsigned extension-firefox/ as a run artifact.
  • release-please (runs on pushes to main): uses googleapis/release-please-action@v5 to keep a release PR up to date. The PR bumps the version in package.json and in extension/manifest.json (through extra-files) and updates CHANGELOG.md, all from Conventional Commits. Merging the PR tags vX.Y.Z and creates the GitHub Release.
  • assets (runs only when release_created):
    1. checks out the tag;
    2. scripts/release-version.mjs checks that the tag matches the manifest version;
    3. npm run sign:firefox signs the Firefox extension on AMO (unlisted, using the WEB_EXT_API_KEY / WEB_EXT_API_SECRET secrets);
    4. gh release upload attaches github-orca-chrome-X.Y.Z.zip and github-orca-firefox-X.Y.Z.xpi to the release.

Everything runs in a single workflow because tags created with GITHUB_TOKEN do not trigger other workflows. Config lives in release-please-config.json (release-type: node, tags like v0.2.0) and in .release-please-manifest.json (0.1.0). package.json was aligned from 1.0.0 to 0.1.0.

Repo setting changed: Allow GitHub Actions to create and approve pull requests is now enabled, so that release-please can open its PR with GITHUB_TOKEN. Because that PR is created by GITHUB_TOKEN, it does not trigger the build job; it only changes versions and the changelog.

The native host is not released. README "Releases" and AGENTS.md are updated.

Verification

  • actionlint passes.
  • npm test passes (233 tests) and npm run typecheck is clean.
  • Both config files parse as valid JSON.
  • releaseVersion tests cover a matching tag, a mismatched tag and a tag without the v prefix.

Not verified

  • After feat: Firefox extension #3 and this PR are merged, release-please opens its first release PR. It will likely propose 0.2.0, with the whole history in the changelog because no tag exists yet.
  • Merging that release PR creates the release, AMO signs the extension, and both files are attached to the release.

@kermitsxb kermitsxb changed the title ci: build and release both extensions ci: build and release both extensions with release-please Oct 1, 2026
@kermitsxb
kermitsxb marked this pull request as ready for review October 1, 2026 12:39
@kermitsxb
kermitsxb merged commit f30b2f9 into feat/firefox-extension Oct 1, 2026
3 checks passed
kermitsxb added a commit that referenced this pull request Oct 1, 2026
* fix(extension): map Firefox native port errors

* feat(build): derive the Firefox manifest

* feat(build): build and sign the Firefox extension

* feat(install): register the native host for Firefox

* docs: Firefox install and signing

* fix(extension): map the Firefox refused-host error

* chore: build before Firefox lint and sign; doc fixes

* ci: build and release both extensions with release-please (#4)

* ci: build both extensions and release them on version tags

* docs: releases

* ci: cut releases with release-please

* docs: release-please releases

* ci: make Firefox signing safe to retry (#5)

* ci: reuse already-submitted AMO versions when signing

* docs: Firefox signing retries
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