Skip to content

ci(publish): move Chrome Web Store to API v2 - #24

Merged
levz0r merged 3 commits into
developfrom
ci/chrome-web-store-v2
Oct 25, 2026
Merged

levz0r merged 3 commits into
developfrom
ci/chrome-web-store-v2

Conversation

@levz0r

@levz0r levz0r commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Chrome Web Store API v1.1 — and the OAuth client ID / refresh-token auth this workflow uses — stopped working on 2026-10-15 (publish-browser-extension v6 logs this deprecation). Without this, the v1.2.1 publish fails at the Chrome step and, because it's one job, skips Firefox and Edge too.

Chrome (API v2, service account)

  • New step mints a short-lived access token from a service-account JSON key by signing a JWT with Node's crypto (no new actions/deps); token is masked and shared by the check and upload steps.
  • Version check uses v2 fetchStatus and skips if the local version is already published or in review. curl -f makes API errors fail the step instead of silently re-publishing.
  • Upload/submit via publish-browser-extension --chrome-api-version v2 --chrome-publisher-id ….

Resilience

  • Firefox and Edge steps run even if Chrome fails (!cancelled(), gated on a successful build); the job still ends red.
  • Summary reports ✓ Published / ⊘ Skipped / ✗ Failed per store from actual step outcomes.
  • Release notes link to CHANGELOG.md (was description.md#version-history, which no longer exists).

Edge auto-submit

  • Drop --edge-skip-submit-review: Edge uploads are now submitted for review like Chrome and Firefox. If a previous version is still in review, only the Edge step fails and can be re-run.

Setup required before merging the release (documented in PUBLISHING.md)

  • Secret CHROME_SERVICE_ACCOUNT_KEY: full JSON key of a service account in a project with the Chrome Web Store API enabled, added under Account in the Developer Dashboard
  • Variable CHROME_PUBLISHER_ID: from https://chrome.google.com/webstore/devconsole/<publisher-id>

Tested offline: the JWT is verified against a throwaway RSA key, and the jq version extraction against sample v2 responses. The live API calls only run on a real publish.

🤖 Generated with Claude Code

Chrome Web Store API v1.1, and the OAuth client/refresh-token auth
the workflow used, stopped working on 2026-10-15
(publish-browser-extension v6 warns about this). Switch to API v2:

- Mint a short-lived access token from a service-account JSON key
  (secret CHROME_SERVICE_ACCOUNT_KEY) by signing a JWT with node's
  crypto, and share it between the version check and the upload.
- Check the store version with v2 fetchStatus (published and
  submitted revisions), failing the step on API errors rather than
  guessing.
- Publish with --chrome-api-version v2 and CHROME_PUBLISHER_ID.

Also let Firefox and Edge publish even if Chrome fails (the job still
fails), report per-store failures in the summary, point release notes
at CHANGELOG.md, and update PUBLISHING.md for the new setup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (8f7c58a) to head (74fd3c5).

Additional details and impacted files
@@            Coverage Diff            @@
##           develop       #24   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            1         1           
  Lines            4         4           
  Branches         1         1           
=========================================
  Hits             4         4           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Lev Gelfenbuim and others added 2 commits October 25, 2026 12:34
Edge uses --edge-skip-submit-review, so the run only uploads a draft
that still has to be submitted in Partner Center.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop --edge-skip-submit-review so Edge, like Chrome and Firefox, is
submitted for review after upload instead of left as a draft. It was
added to avoid 'already in review' rejections; with stores now
isolated, that case fails only the Edge step and can be re-run.

Also point PUBLISHING.md at Publisher > Settings, where the dashboard
actually puts the service account field.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@levz0r
levz0r merged commit c25a038 into develop Oct 25, 2026
4 checks passed
@levz0r
levz0r deleted the ci/chrome-web-store-v2 branch October 25, 2026 10:38
@levz0r levz0r mentioned this pull request Oct 25, 2026
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