Use this checklist when cutting a new version. The workflow .github/workflows/release.yml runs on push of a tag v* and creates the GitHub Release with body from the tag message and the matching changelog section.
-
CHANGELOG.md
- Move [Unreleased] entries to a new version section:
## [X.Y.Z] - YYYY-MM-DD(e.g.## [1.0.0] - 2026-04-01). - Keep an empty
## [Unreleased]at the top for future changes.
- Move [Unreleased] entries to a new version section:
-
UPGRADING.md
- Add or update upgrade notes for the new version if there are breaking or notable changes.
-
Run release-check
- From the bundle root:
make release-check. - Current chain:
check-no-cursor-coauthor,ensure-up,composer-sync,cs-fix,cs-check,rector-dry,phpstan,test-coverage,release-check-demos,test-ts(aliasassets-test).
- From the bundle root:
-
Optional checks
make validate-translations(YAML translation files undersrc/Resources/translations/).make validate(Composer metadata).make update-deps(refresh Composer lock files in bundle and demos before cutting a maintenance release).
If
release-check-demosfails because Docker cannot bind the default demo HTTP ports (8010/8011), stop the conflicting containers or run the demos with another port, for example:(cd demo/symfony8 && PORT=18010 make release-check) (cd demo/symfony8 && PORT=18011 make release-check)
-
Commit
- Commit
docs/CHANGELOG.md,docs/UPGRADING.mdand any other release-related changes. - Push to
main(or merge your release branch).
- Commit
Replace X.Y.Z with the version (e.g. 1.0.0):
git checkout main
git pull origin main
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z- Tag format must be
vX.Y.Z(e.g.v1.0.0) so the workflow and Packagist recognize it. - After the push, GitHub Actions creates the release and appends the changelog entry for that version to the release body.
- Packagist will pick up the new tag automatically.
After creating the release commit and tag, run make check-no-cursor-coauthor again before git push (REQ-GIT-001). The release commit itself is not covered by an earlier release-check run.
git checkout main
git pull origin main
git tag -a v1.0.6 -m "Release v1.0.6 - docs: Twig override freeze rule and form theme table"
git push origin main
git push origin v1.0.6git checkout main
git pull origin main
git tag -a v1.0.5 -m "Release v1.0.5 - named asset package, FrankenPHP banner, demo PHP 8.5"
git push origin main
git push origin v1.0.5After running make release-check and committing all changes (CHANGELOG, UPGRADING, docs, and any CS/test fixes):
git checkout main
git pull origin main
git tag -a v1.0.0 -m "Release v1.0.0 — first public release of TagInputBundle."
git push origin main
git push origin v1.0.0The GitHub repository must contain at least one commit on main before the tag push triggers .github/workflows/release.yml.