codemp/dist/RELEASING.md
2024-11-17 15:03:56 +01:00

33 lines
2.3 KiB
Markdown

# Release flow
Releases on registries are automatically handled with GitHub Actions, which will only run on commits tagged as `v[0-9]+.[0-9]+.[0-9]+`.
Every time a new tag matching that is pushed:
- builds and tests core library
- publishes core rust library on `crates.io` (which will rebuild main documentation)
- builds codemp javascript bindings for windows, linux and macos and publishes it on `npm`
- builds codemp python bindings for windows, linux and macos and publishes it on `PyPI`
- builds codemp luajit bindings for windows, linux and macos and publishes it on both `LuaRocks` (source) and codemp.dev/releases (binary)
- builds codemp java bindings for windows, linux and macos and publishes it on `Maven Central`
# Checklist
Before writing the tag, make sure all these steps have been followed:
> do any required change in a branch named `release/vX.Y.Z`, for which a PR can then be opened
- [ ] `Cargo.toml`: bump version
- [ ] `dist/js/package.json`: make sure `version` matches with Cargo.toml (also check `optionalDependencies`: all versions must be the same)
- [ ] `dist/py/pyproject.toml`: make sure `version` matches with Cargo.toml
- [ ] `dist/java/build.gradle`: make sure `version` matches with Cargo.toml
- [ ] `dist/lua/codemp-X.Y.Z-1.rockspec`: make sure `version` matches with Cargo.toml
- note that the rockspec file contains current version in its name so must be renamed
- note that rockspec versions have a fourth component: "revision". we don't use it so always set is as `1`
- [ ] update `Cargo.lock` (basically delete it and re-run `cargo build`. check diff before committing!)
- [ ] **make sure docs build without warning or errors** (`cargo doc --features=serialize`)
- [ ] **make sure that core crate builds** with `--release --features=js,py,java,lua`
- [ ] **make sure the version you're about to release is available** (on all registries!)
- [ ] update last tag in "commits since last tag" badge (in README.md)
- [ ] commit all these changes (in `release/vX.Y.Z` branch), open a PR and have it approved and merged
- [ ] generate a new tag with same version as the one specified in Cargo.toml. include changelog in its description
- use `git log <last-tag>..HEAD --oneline` to get a commit list, but **don't just put it as-is!**
- **remember to push the newly generated tag with** (`git push --tags`)