Releases are fully automated via CI:
- PRs merge to
mainwith changesets (for package changes) and/or.server-changes/files (for server-only changes). - The changesets-pr.yml workflow automatically creates/updates the
changeset-release/mainPR with version bumps and an enhanced summary of all changes. Consumed.server-changes/files are removed on the release branch (same approach changesets uses for.changeset/files — they're deleted on the branch, so merging the PR cleans them up). - When ready to release, merge the changeset release PR into
main. - The release.yml workflow automatically:
- Publishes all packages to npm
- Creates a single unified GitHub release (e.g., "trigger.dev v4.3.4")
- Tags and triggers Docker image builds
- After Docker images are pushed, updates the GitHub release with the exact GHCR tag link
- Package changes: Add a changeset with
pnpm run changeset:add - Server-only changes: Add a
.server-changes/file (see.server-changes/README.md) - Mixed PRs: Just the changeset is enough
See CHANGESETS.md for full details on changesets and server changes.
- Merge in the changeset PR into main, making sure to cancel both the release and publish github actions from that merge.
- Pull the changes locally into main
- Run
pnpm iwhich will update the pnpm lock file with the new versions - create a commit with "Release 3.x.x" and push. This will build and release the packages
- Create a git tag on that release commit with v.docker.3.x.x and push the tag to origin. This will publish the
v3.x.xdocker image to GitHub Container Registry. - Once the image is built and pushed, create a new GitHub release and select the tag you just created, along with the previous tag that was released.
- This will generate some release notes. Edit out the package changes and leave only the server changes.
- Name the release
@trigger.dev/docker@3.x.x - Include the package link (e.g. https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/278459584?tag=v3.x.x)
- Once the packages have been published, head over to the v2-legacy repo and follow the instructions in the README for creating a matching release.
- Before deploying to cloud, compare the differences in the previously created release and double check to see if there are any migrations with indexes created concurrently, and make sure to run those before deploying.