We have a simple script to release npm packages from pnpm workspaces: cargo xtask workspace --bump
.
? Select a package to bump
> [ ] @vercel/node-module-trace
[ ] @vercel/webpack-node-module-trace
[↑↓ to move, space to select one, → to all, ← to none, type to filter]
Press space to select the package you want to publish. Press enter to choose the version type you want to bump:
? Select a package to bump @vercel/node-module-trace, @vercel/webpack-node-module-trace
? Version for @vercel/node-module-trace
patch
minor
> major
alpha
beta
canary
[↑↓ to move, enter to select, type to filter]
Note
This command will always increase the version according to the semver version.
For example, if the current version of one package is1.0.0
, and you choosepatch
, the version will be increased to1.0.1
.
Warning
If the version of one package is
1.0.0-beta.0
, and you choosealpha
, the cli will panic and exit. Because thebeta
<alpha
in semver.
Once you have finished the bump, the script will do the following things:
- bump the version you choose in the corresponding package
- update dependencies in other packages that depend on the package you choose
- update
pnpm-lock.yaml
file - run
git tag -s pkg@version -m "pkg@version"
for each package
You need to run git push --follow-tags
to finish the release.
We have a multi step release process for Turborepo right now.
NOTE: The steps below must be run serially, in the order specified.
-
Create a release branch by triggering the 1. Turborepo Release (release branch) workflow
- Specify the semver increment using the SemVer Increment field (start with
prerelease
)
- Specify the semver increment using the SemVer Increment field (start with
-
Build the Go Binary by triggering the 2. Turborepo Release (go binary) workflow.
- Specify the release branch (example:
staging-1.7.0-canary.1
) in both the "use workflow from", and "Staging branch to release from" fields.
- Specify the release branch (example:
-
Build the Rust Wrapper by triggering the 3. Turborepo Release (rust binary & publish) workflow.
- Specify the release branch (example:
staging-1.7.0-canary.1
) in both the "use workflow from", and "Staging branch to release from" fields. (this should match step 2.1 above)
- Specify the release branch (example:
-
A PR is automatically opened to merge the release branch created in step 1 back into
main
⚠️ Merge this in! You don't need to wait for tests to pass.
It's important to merge this branch soon after the publish is succesful
-
turbo-orchestrator.yml
pollsnpm
every 5 mins. When a new version is detected, [turborepo-smoke-published.yml
][4] runs against@latest
and@canary
tags.
- Github Release Notes are published on their own using config from
turborepo-release.yml
, triggered by theturbo-orchestrator
bot. eslint-plugin-turbo
andeslint-config-turbo
need to be published separately.