Use this file for beta and production releases. The backend URL, Chrome Web Store item IDs, and Chrome Web Store service-account credentials are environment-specific values.
After the target branch or tag is pushed to GitHub, the manual workflow sequence can be dispatched from the CLI:
RELEASE_CHANNEL=beta IMAGE_TAG=sha-abcdef0 just run-release-workflow ci deployment-smoke backend-image deploy-backend extension-packageThe default step list is ci, deployment-smoke, backend-image,
deploy-backend, and extension-package. Use RELEASE_DRY_RUN=1 to print the
GitHub CLI commands without dispatching. Chrome Web Store upload is intentionally
explicit:
RELEASE_CHANNEL=beta CWS_PUBLISH_TYPE=upload_only just run-release-workflow chrome-web-store- Confirm
just checkpasses locally. - Run
just audit-releaseand review any external GitHub environment failures. - Run
PRODUCTION_REVIEWER=yicheny0580 just configure-github-envsif environments or production reviewers are missing. - Set each environment's required variables and secrets, then rerun
just audit-release. - Use
.release-inputs.example.envas the template for.release-inputs.env, then runRELEASE_INPUTS_FILE=.release-inputs.env just configure-github-env-inputs. - Confirm
just smoke-dockerpasses locally. - Run the
Deployment Smokeworkflow if local Docker cannot pull the required images. - Run the
CIworkflow on the target commit. - Run
just audit-actionsafter CI, deployment smoke, and extension package workflows finish. - Run
Backend Imageand record the immutable image tag. - Run
Deploy Backendfor thebetaenvironment. - Verify
BACKEND_PUBLIC_URL/healthz. - Run
BACKEND_PUBLIC_URL=https://beta.example.com just smoke-backend. - Run
Extension Packageforbeta. - Confirm the ZIP name includes
beta, manifest version, and git SHA. - Confirm
RELEASE_CHANNEL=beta just audit-actionsfinds the ZIP artifact for the target commit. - Upload or run
Chrome Web Store Uploadagainst the private tester item. - Confirm the tester email list is maintained outside the repo.
- Smoke test create, join, update, and leave through the public beta URL.
- Confirm the backend smoke command observes a WebSocket
room.updatedbroadcast. - Smoke test YouTube, Bilibili, and a basic HTML video page.
- Send testers the install link, bug-report path, known limitations, and reinstall instructions.
- Require reviewer approval on the
productionGitHub Actions environment. - Confirm
just audit-releasereports all GitHub environment checks passing. - Build the backend image from a release tag.
- Deploy production from the tagged image.
- Build the production extension with the production backend URL.
- Use
RELEASE_CHANNEL=production RELEASE_REF=v3.0.23 just run-release-workflow backend-image deploy-backend extension-packagefor the production workflow sequence. - Confirm manifest version is greater than the current Chrome Web Store version.
- Confirm store listing, screenshots, privacy fields, permissions, and review notes are final.
- Prefer
STAGED_PUBLISHso the approved item can be released deliberately. - Smoke test create, join, update, leave, and WebSocket room updates through production.
- Run
BACKEND_PUBLIC_URL=https://production.example.com just smoke-backend. - Review
docker compose logs serveranddocker compose logs caddyafter release. - Confirm backend rollback to the previous image tag.
- Confirm extension rollback path with the previous approved ZIP or Chrome Web Store dashboard flow.
- Run
just smoke-rollbackto test local backend image rollback and extension ZIP fallback artifacts before production.
Backend:
- Edit
.envon the VPS and setSERVER_IMAGEto the previous immutable tag. - Run
docker compose pull. - Run
docker compose up -d. - Verify
/healthzand a room create/join smoke test.
Extension:
- Stop publishing the new package if it is staged or still under review.
- If already published, use the Chrome Web Store rollback path or upload a fixed version with a higher manifest version.
- Ask testers to reinstall only when Chrome does not update quickly enough for the test window.
Local rollback verifier:
just smoke-rollbackThis command verifies the backend rollback mechanics through Docker Compose and Caddy, then builds and validates two extension ZIP artifacts that represent current and rollback packages.
The current stack relies on Caddy and Docker logs. During beta, review:
- Backend start, shutdown, and request logs.
- Caddy proxy errors.
- Tester reports for room expiration, invite failures, and unsupported video pages.