EchoKit now has fully automated releases when merging to main!
PR Merge to main
↓
.github/workflows/auto-release.yml
↓ (reads extension/manifest.json version)
↓ (creates tag v*.*.* if not exists)
↓
.github/workflows/release.yml
↓ (triggered by tag)
↓ (builds zip)
↓ (creates GitHub Release)
↓ (uploads to Chrome Web Store)
↓
✅ Published!
// extension/manifest.json
{
"version": "1.7.0" // ← Increment this
}
auto-release.yml workflow detects the version changev1.7.0release.yml workflow is triggered by the taggit tag v1.7.0
git push origin v1.7.0
This triggers release.yml directly (skips auto-release.yml).
For auto-release workflow to trigger release.yml:
PAT_FOR_WORKFLOWS - Personal Access Token with repo scope
GITHUB_TOKEN cannot trigger other workflows (security feature)repo (full control of private repositories)PAT_FOR_WORKFLOWSGITHUB_TOKEN (tag created but release.yml won’t trigger)For Chrome Web Store publishing to work:
CWS_EXTENSION_IDCWS_CLIENT_IDCWS_CLIENT_SECRETCWS_REFRESH_TOKENSee .github/CHROME_WEB_STORE_SETUP.md for setup instructions.
auto-release.yml triggers on:
on:
push:
branches: [main]
paths:
- 'extension/**'
- '!extension/**/*.md'
release.yml triggers on:
on:
push:
tags: ['v*.*.*']
gh run list --workflow=auto-release.yml --limit 5
gh run list --workflow=release.yml --limit 5
gh run view # Shows latest run
gh run view <run-id> --log
https://github.com/ravitejakamalapuram/echokit/actions
extension/ changes (not docs)# 1. Create feature branch
git checkout -b feature/new-feature
# 2. Make changes + bump version
vim extension/manifest.json # "version": "1.7.0"
git commit -am "feat: add new feature"
# 3. Push and create PR
git push -u origin feature/new-feature
gh pr create --fill
# 4. Merge PR (via GitHub UI or CLI)
gh pr merge --squash --delete-branch
# 5. Wait ~2 minutes
# ✅ Tag v1.7.0 created automatically
# ✅ GitHub Release created
# ✅ Chrome Web Store updated
# ✅ Extension published!
Tags and releases: https://github.com/ravitejakamalapuram/echokit/releases
Q: What if I merge to main without updating the version?
A: The workflow checks if the tag already exists. If it does, it skips tag creation and does nothing.
Q: Can I still create tags manually?
A: Yes! Manual tags will still trigger release.yml normally.
Q: How do I skip auto-release for a specific commit?
A: Add [skip-release] to your commit message, or only change non-extension/ files.
Q: What if Chrome Web Store secrets are missing?
A: The release.yml workflow will fail with clear instructions on how to set them up.
# List existing tags
git tag -l
# Delete tag locally and remotely (if needed)
git tag -d v1.6.0
git push origin :refs/tags/v1.6.0
# Next merge to main will recreate it
extension/** files changed?main (not a different branch)Created: 2026-05-11
Updated: 2026-05-11
Status: ✅ Active