# Release Checklist A standard release, from `main` (i.e. 0.1.0, v0.2.3, v4.5.6, etc.) _N.B All the version numbers above follow Semantic Versioning, and specifically its notion of encoding pre-release information after the `-` for more information see the [Semantic Versioning specification](https://semver.org/)_ ## Standard Release As noted above, a standard release takes the form of a tagged commit on the `main` branch, and includes all commits previous to it. Preparing it involves several phases: ### Tag and build release This part of the release process is handled by CircleCI. When a version tag is pushed, a workflow will be triggered, and is reponsible for building the library and publishing a new verison to crates.io. 1. Create a PR that bumps the package version inside `Cargo.toml`. 2. Have your PR merged to `main`. 3. Once merged, run `git checkout main` and `git pull`. 4. Sync your local tags with the remote tags by running `git tag -d $(git tag) && git fetch --tags`. 5. Tag the commit by running either `git tag -a #.#.# -m "#.#.#"`. 6. Run `git push --tags`. 7. Wait for CI to pass. 8. Create a new [release](https://github.com/apollographql/environment-detector/releases) from the associated tag. 9. Click `Edit`, paste the release notes from the changelog, and save the changes to the release.