This document describes the process of deploying the entire monorepo. This monorepo is a collection of NPM packages and a single go application.
We use Lerna to manage the publication and versioning of our packages.
If you want to publish a new version of an NPM package, you can do so by following:
- Check the workflow Releases Preview to see an preview of the release (example) .
- Trigger the workflow Packages Release manually in the UI or by running the following command:
gh workflow list
gh workflow run <workflow> --ref branch-name
* Requires the github cli and write access to the repository
The release process is triggered locally. The root package version represent the Wunderctl version. We use GoReleaser to release the wunderctl application and release-it only for tagging.
The NPM package @wundergraph/wunderctl
is a wrapper for the wunderctl binary. We release it with the wunderctl Go
binary to make the deployment of both applications atomic. Don't publish this package with Lerna.
The package is released automatically as soon as the wunderctl binary is published.
The @wundergraph/sdk
package is required for all
WunderGraph applications. After installing this package, it will download the compatible wunderctl
version. This
relationship makes it necessary to release the wunderctl binary first before upgrading
the @wundergraph/wunderctl
package.
We use lerna conventional commit integration to estimate the next release version. If you create a PR, we also enforce a proper PR title which decide upon the semver change.
Component | Stable Release | Next Release |
---|---|---|
WunderCtl | Trigger workflow Choose between patch , minor , major . |
Trigger via Workflow run (Select branch next ) |
WunderCtl (Wrapper) | Is released automatically after Wunderctl workflow in Engine Release workflow. Use the same version as WunderCtl. | - |
NPM Packages | Trigger via Workflow run (Select stable ). Version is calculated based on conventional commits. |
Trigger via Workflow run (Select branch next ) |
Next releases must be done on a branch with the name next
. Regular "stable" releases are done on the main
branch.