build-tools/RELEASE.md
This is the release checklist for SeaORM release candidates.
Check the latest published SeaORM version:
cargo search sea-orm --limit 5
git tag --list '2.0.0-rc*' --sort=-v:refname | head
For a new release candidate, bump to the next 2.0.0-rc.N.
Release from master after the release PR has been merged and CI has passed.
git switch master
git pull --ff-only
git status --short
The worktree should be clean before starting.
Run the bump script:
bash build-tools/bump.sh 2.0.0-rc.N
This creates two commits:
2.0.0-rc.N
update examples
The first commit bumps the publishable crate manifests:
sea-ormsea-orm-codegensea-orm-clisea-orm-macrossea-orm-migrationsea-orm-syncThe second commit bumps example sea-orm / sea-orm-migration dependency comments.
bump.sh detects GNU vs BSD sed, so it runs on both Linux and macOS.
Create a release note file:
changelog/2.0.0-rc.N.md
Then link it from CHANGELOG.md under 2.0.0 - pending > Release Candidates.
The changelog should call out:
Commit it separately:
git add CHANGELOG.md changelog/2.0.0-rc.N.md
git commit -m "Add changelog for 2.0.0-rc.N"
Run the main workspace and the separate workspaces:
cargo check --workspace
cargo check --manifest-path sea-orm-cli/Cargo.toml
cargo check --manifest-path sea-orm-migration/Cargo.toml
cargo check --manifest-path sea-orm-sync/Cargo.toml
Known warnings are acceptable only if they already exist and are unrelated to the release.
Push master:
git push origin master
Wait for GitHub Actions to pass before publishing. Do not publish while CI is still running or red.
After CI passes, run:
bash build-tools/publish.sh
The publish order is:
sea-orm-codegensea-orm-clisea-orm-macrossea-ormsea-orm-migrationsea-orm-syncIf crates.io indexing causes a dependent publish to fail, wait briefly and retry the failed crate.
After publishing succeeds:
git tag 2.0.0-rc.N
git push origin 2.0.0-rc.N
Create a GitHub Release using changelog/2.0.0-rc.N.md as the release body.
sea-orm-cli binariesThe .github/workflows/sea-orm-cli-release.yml workflow builds prebuilt
sea-orm-cli binaries and powers cargo binstall sea-orm-cli. It triggers on a
separate tag namespace, sea-orm-cli@<version>, not the 2.0.0-rc.N release
tag — so it does nothing unless that tag is pushed.
Create the tag as annotated, because the workflow's gh release create --notes-from-tag reads the tag's message (a lightweight tag yields empty notes):
git tag -a "[email protected]" -m "sea-orm-cli 2.0.0-rc.N"
git push origin "[email protected]"
The workflow then builds the 5 targets, attaches the archives to a draft release,
and publishes it. Confirm the assets appear on the [email protected]
release and that cargo binstall sea-orm-cli resolves.
Confirm crates.io shows the new versions:
cargo search sea-orm --limit 5
cargo search sea-orm-cli --limit 5
cargo search sea-orm-migration --limit 5
cargo search sea-orm-sync --limit 5
Also check that docs.rs builds have started or completed.