This document describes how the Reprise maintainers cut a release.
This repository ships two packages, released together from a single Git tag:
- the Composer bundle
symfony/reprise, published to Packagist from the tag; - the npm plugin
@symfony/reprise, published to npm by therelease-on-npm.yamlworkflow.
- Push access to the
upstreamremote (git@github.com:symfony/reprise.git). - The npm package's trusted publisher configured on npmjs.com to point at the
symfony/repriserepository and therelease-on-npm.yamlworkflow. This is what lets the workflow publish without anNPM_TOKEN.
-
Start from an up-to-date
main:git checkout main git pull upstream main
-
Cut the release commit and tag with the helper script, passing the bump level:
./release.sh minor # or patch / major / an explicit version such as 0.2.0It checks that you are on a clean
mainin sync withupstream, then runspnpm versioninsideassets/(the publishable package) to bumpassets/package.json, commit, and create thev<version>tag. Runningpnpm versionfrom the repo root would target the private root package, and--filterwould skip the commit and tag -- that is why the script scopes it toassets/. -
Push
mainand the new tag to upstream:git push upstream main --follow-tags
-
Pushing the
v<version>tag triggersrelease-on-npm.yaml, which publishes@symfony/repriseto npm through OIDC trusted publishing. The workflow refuses to publish a tag that isn't onmain. Packagist picks up the same tag for the Composer package. -
Write the release notes on GitHub (Releases -> Draft a new release), select the
v<version>tag, and generate the changelog.