Tag-driven release pipeline
The standard release shape: push a tag like v1.4.2, a workflow fires on tag push, builds release artifacts, publishes to GitHub Releases / npm / PyPI / ghcr, and posts the changelog.
Components
- Tag — created locally with
git tag v1.4.2 && git push --tagsor via GitHub UI. - Release workflow — listens on
on: push: tags: ['v*.*.*']. - Build — produces release artifacts.
- Changelog — auto-generated (release-please, changesets, conventional-changelog) or human-written.
- GitHub Release — created via
softprops/action-gh-releaseor thegh release createCLI. - Distribution publish — npm, PyPI, ghcr.io, etc., from the same workflow.
Automation level
Choose your spot on the spectrum:
- Manual tag —
git tagby hand. Simplest. - release-please (Google) — auto-PRs a 'release' commit; merging the PR creates the tag.
- changesets (npm-centric) — contributors write changeset files; CI aggregates and tags.
- semantic-release — fully automatic from conventional commits.