CI/CD Pipeline¶
Workflows¶
-
ci.ymlRuns on pull requests and branch pushes (staging,main) to validate extension code and docs. -
staging-version-guard.ymlRuns on pull requests tostagingand blocks release-version changes (extension/manifest.jsonand docs index version line).
Version bumping is release-only and must happen frommainautomation. -
deploy-docs.ymlRuns onstagingonly when docs-related files change, then builds and deploys MkDocs docs to GitHub Pages. This workflow is docs-only and never bumps extension version. -
prepare-release.ymlRuns onmainwhen extension code changes land. It calculates the next version and opens or updates a release PR against protectedmaininstead of pushing directly. It pushes the release branch directly. The repository should allow GitHub Actions to create pull requests, andREPO_ADMIN_TOKENremains a fallback if that setting is disabled later. -
release.ymlRuns onmainwhen a release PR merges andextension/manifest.jsonchanges, or by manual dispatch, to: - read the manifest version already merged into
main - create tag
vX.Y.Zif it does not exist yet - generate friendly GitHub release notes in plain language automatically
- package extension zip
- create or update the GitHub release
- upload + publish to Chrome Web Store API
If the Chrome Web Store item is already under review, the workflow keeps the GitHub release successful and records the store publish as deferred instead of failing the whole release.
-
weekly-staging-to-main.ymlRuns weekly (and on manual dispatch) to create/reuse a sync PR fromstagingtomainwhenstagingis ahead. It requests auto-merge and can optionally use admin fallback merge whenREPO_ADMIN_TOKENis configured. -
apply-branch-protection.ymlManual workflow to apply branch protection policies formainandstagingusing admin token (REPO_ADMIN_TOKEN).
CI Validation Gates¶
ci.yml enforces:
node --checkon all extension JavaScript files- JSON validation for
extension/manifest.json - extension package integrity validation (
node scripts/validate-extension.mjs) - junk-file rejection (
.DS_Store) - strict MkDocs build (
mkdocs build --strict)
Chrome Web Store Publish Flow¶
- Merge cycle promotes code from
stagingtomain. prepare-release.ymlcomputes the next semantic version automatically.prepare-release.ymlopens or updates a release PR to protectedmain.- CI runs on the release PR branch.
- After approval and merge,
release.ymlcreates and pushes tagv<version>. release.ymlpublishes the GitHub Release with friendly autogenerated release notes.release.ymlpackages extension zip indist/.release.ymluploads extension package to Chrome Web Store API.release.ymlpublishes uploaded package (defaulttarget unless overridden byCWS_PUBLISH_TARGET).
Required Secrets¶
CWS_CLIENT_IDCWS_CLIENT_SECRETCWS_REFRESH_TOKENCWS_PUBLISHER_IDCWS_EXTENSION_ID- optional
CWS_PUBLISH_TARGET - optional
REPO_ADMIN_TOKEN(recommended for release PR creation, branch-protection apply, and weekly admin merge fallback)