ci: automate Firefox releases, keep Chrome manual - #28
Merged
Conversation
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
ShiosOS
force-pushed
the
ci/store-publishing-config
branch
from
August 17, 2026 14:23
f263d81 to
8514bbc
Compare
The Release workflow had store-publishing steps for both stores, but neither would have published. Resolve them in opposite directions. Firefox: switch `web-ext sign` from the unlisted channel to listed, so releases land on the public addons.mozilla.org listing instead of producing a self-hosted .xpi. Listed submissions don't return a signed file — AMO serves it from the listing — so dist/*.xpi no longer matches anything; pin fail_on_unmatched_files to false to keep that a warning rather than a failed release. The AMO secrets are already configured, so this goes live on the next release once the listing exists; the one-time manual submission that the listed channel requires is now documented. Chrome: drop the upload step and the chrome-webstore-upload-cli dev dependency. It was already broken — the step never set PUBLISHER_ID, which chrome-webstore-upload lists in requiredFields because the Web Store v2 API addresses items as publishers/<id>/items/<id>. Fixing it would have meant standing up a Google Cloud OAuth client and carrying a refresh token that Google revokes on its own schedule (7 days while the consent screen sits in Testing). That's recurring upkeep in exchange for a two-minute drag-and-drop a few times a year, so RELEASING.md documents the manual upload instead and the workflow says why it stops at Firefox.
ShiosOS
force-pushed
the
ci/store-publishing-config
branch
from
August 17, 2026 14:27
8514bbc to
fd77044
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
The Release workflow already had store-publishing steps for both stores, but neither would actually have published. This resolves them in opposite directions: Firefox gets automated, Chrome stays manual.
Chrome was broken and isn't worth fixing. The step never set
PUBLISHER_ID, whichchrome-webstore-uploadlists inrequiredFieldsbecause the Web Store v2 API addresses items aspublishers/<publisherId>/items/<extensionId>— so the first upload would have failed. Making it work means standing up a Google Cloud OAuth client and carrying a refresh token that Google revokes on its own schedule (after 7 days while the consent screen sits in Testing). That's recurring upkeep in exchange for a two-minute drag-and-drop a few times a year. Dropped the step and documented the manual process.Firefox was publishing to the wrong place.
--channel unlistedis self-hosted distribution: a signed.xpion the GitHub Release, no public listing. Switched tolistedso releases reach addons.mozilla.org.Changes
release.yml:web-ext sign --channel unlisted→--channel listedrelease.yml: pinfail_on_unmatched_files: false— listed submissions return no signed file, sodist/*.xpinow matches nothing and must warn rather than fail the releaserelease.yml: remove the Chrome Web Store step, with a comment recording why it stops at Firefoxpackage.json: drop the now-unusedchrome-webstore-upload-clidev dependencyRELEASING.md: new Chrome: manual release section (per-release upload steps + one-time setup); document the one-time AMO listing submission that the listed channel requires; drop the fiveCHROME_*secrets and the OAuth troubleshootingCHANGELOG.md: note both under[Unreleased]Testing
npm run checkpasses (format, lint, type-check, web-ext lint, tests — 64 passing)npm run buildproduces a working package (dist/copy-pr-link-v0.1.0.zip)Notes
AMO_JWT_ISSUER/AMO_JWT_SECRETare already set, so the AMO step activates on the next release. On thelistedchannelweb-ext signupdates an existing listing and can't create one, so the one-time AMO submission documented inRELEASING.mdneeds to happen before the next release — otherwise the step fails with no add-on to update.🤖 Generated with Claude Code