# Releasing To initiate a new production deployment: ```sh script/release vX.Y.Z ``` See `script/release --help` for more information. > **Note:** > Every production release will request an approval by the select few people before it can proceed. What this does is: - Builds Linux binaries on Ubuntu; - Builds and signs Windows binaries on Windows; - Builds, signs, and notarizes macOS binaries on macOS; - Uploads all release artifacts to a new GitHub Release; - A new git tag `vX.Y.Z` is created in the remote repository; - The changelog is [generated from the list of merged pull requests](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes); - Updates cli.github.com with the contents of the new release; - Updates our Homebrew formula in the homebrew-core repo. To test out the build system while avoiding creating an actual release: ```sh script/release --staging vX.Y.Z --branch patch-1 -p macos ``` The build artifacts will be available via `gh run download -n macos`. ## General guidelines * Features to be released should be reviewed and approved at least one day prior to the release. * Feature releases should bump up the minor version number. * Breaking releases should bump up the major version number. These should generally be rare. ## Test the build system locally A local release can be created for testing without creating anything official on the release page. 1. Make sure GoReleaser is installed: `brew install goreleaser` 2. `script/release --local` 3. Find the built products under `dist/`.