Back to Monty

Release Process

RELEASING.md

0.0.211.5 KB
Original Source

Release Process

1. Bump Version

Edit Cargo.toml to bump the version (both the main version and the package versions)

Run

bash
make lint-rs

This will update Cargo.lock, sync package.json/package-lock.json (via crates/monty-js/build.rs), and sync the pydantic-monty metapackage's version and its exact pins on pydantic-monty-client/pydantic-monty-runtime (via crates/monty-python/build.rs).

2. Commit and Push

bash
git checkout -b prepare-release-vX.Y.Z
git commit -am "Bump version to vX.Y.Z"
git push

3. Create Release via GitHub UI

Once the PR is merged, create a release in the GitHub UI with a tag matching the version in Cargo.toml.

4. CI Handles Publishing

Once the tag is pushed, CI will:

  • Build wheels for all platforms
  • Publish to PyPI (pydantic-monty-client wheels, pydantic-monty-runtime wheels, and the pydantic-monty metapackage that pins both)
  • Publish to NPM (@pydantic/monty + the platform packages carrying the napi library, the monty binary, and the wasm build)
  • Publish the Rust crates to crates.io (monty, monty-types, monty-alloc, monty-fs, monty-runtime, monty-macros, monty-proto, monty-pool, monty-type-checking, monty-typeshed) via cargo publish --workspace

Monitor the workflow at https://github.com/pydantic/monty/actions

Pre-release Tags

For pre-releases (alpha, beta, rc), use a tag like v0.0.2-beta.1:

  • PyPI: Published normally
  • NPM: Published with --tag next (not latest)