Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Release Process

Use this process when cutting a new source and binary release.

Prepare the Release PR

  1. Pick the next version.

    Prerelease versions use SemVer suffixes such as 0.1.0-beta.3, 0.1.0-alpha.12, or 0.1.0-rc.1. GitHub and crates.io treat those as prereleases. Stable releases do not have a suffix, for example 0.1.0.

  2. Update Cargo.toml.

    version = "0.1.0-beta.3"
    
  3. Add a concrete section to CHANGELOG.md.

    Do not leave release notes only under [Unreleased]. The binary release workflow extracts the section that matches the tag.

    ## [0.1.0-beta.3] - 2026-04-29
    
    ### Highlights
    
    - Added or changed something user-visible.
    - Fixed something release-worthy.
    
  4. Open a PR with the version bump and changelog entry.

    The release-readiness workflow checks whether release metadata will be updated on merge and verifies that CHANGELOG.md already contains concrete notes for the exact Cargo.toml version.

Merge and Verify

  1. Merge the release PR to main.

  2. Wait for the merge pipelines to pass:

    • Continuous Deployment
    • Benchmarks (Post-Merge)
  3. Confirm the release tag exists.

    git fetch --tags origin
    git rev-parse v0.1.0-beta.3
    

Publish or Rerun Binaries

Use the Release workflow when binaries need to be built or repaired.

  1. Open GitHub Actions.

  2. Run the Release workflow manually.

  3. Enter the exact tag, including the leading v.

    v0.1.0-beta.3
    
  4. Wait for all release jobs to pass.

    Expected platform archives:

    • direct_play_nice-aarch64-apple-darwin.tar.xz
    • direct_play_nice-x86_64-apple-darwin.tar.xz
    • direct_play_nice-x86_64-unknown-linux-gnu.tar.xz
    • direct_play_nice-x86_64-pc-windows-msvc.zip

    The workflow also publishes checksums, installers, dist-manifest.json, and the source archive.

Verify the Published Release

Check the GitHub release:

gh release view v0.1.0-beta.3 --json tagName,isDraft,isPrerelease,publishedAt,assets

Verify:

  • isDraft is false.
  • isPrerelease matches the version suffix.
  • The release body contains the matching CHANGELOG.md section.
  • All expected binary archives and checksum files are present.

Check crates.io:

curl -sS https://crates.io/api/v1/crates/direct_play_nice/0.1.0-beta.3

Notes

  • Manual Release workflow reruns update an existing GitHub release and replace assets with the same names.
  • The workflow resolves the GitHub release target from the requested tag, not from the branch used to dispatch the workflow.
  • Release-workflow benchmarks are skipped for manual binary reruns. The post-merge benchmark pipeline remains the release gate.