Skip to content

Latest commit

 

History

History
118 lines (84 loc) · 2.65 KB

File metadata and controls

118 lines (84 loc) · 2.65 KB

Release Process

This document describes the release process for Aprender.

Prerequisites

  1. All CI checks must pass
  2. Quality gates must be satisfied:
    • Test coverage ≥ 97%
    • Mutation score ≥ 85%
    • TDG score ≥ 95 (A+)
    • Zero SATD comments
    • Complexity within limits
  3. CHANGELOG.md updated with release notes
  4. Version bumped in Cargo.toml

Release Checklist

1. Pre-Release Validation

# Ensure all tests pass
make test

# Run quality gates
pmat quality-gate

# Check documentation builds
cargo doc --no-deps --all-features

# Verify examples work
cargo run --example boston_housing
cargo run --example iris_clustering
cargo run --example dataframe_basics

# Test crates.io package
cargo publish --dry-run

2. Create Release Tag

# Update version in Cargo.toml (e.g., 0.1.0 -> 0.1.1)
# Update CHANGELOG.md with release notes

git add Cargo.toml CHANGELOG.md
git commit -m "Release v0.1.1"
git tag -a v0.1.1 -m "Release v0.1.1"
git push origin main
git push origin v0.1.1

3. GitHub Actions Automation

The release workflow (.github/workflows/release.yml) will:

  1. Build artifacts for Linux, macOS, and Windows
  2. Run tests on all platforms
  3. Publish to crates.io (when enabled)
  4. Create GitHub Release with artifacts and release notes

4. Manual crates.io Publishing

If automatic publishing is not configured:

cargo publish --token $CARGO_REGISTRY_TOKEN

Enabling Automatic crates.io Publishing

  1. Get your crates.io API token from https://crates.io/me
  2. Add token as GitHub Secret named CARGO_REGISTRY_TOKEN
  3. Update .github/workflows/release.yml:
    - name: Publish to crates.io
      run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}

Version Numbering

Follow Semantic Versioning (SemVer):

  • MAJOR (0.x.0): Breaking API changes
  • MINOR (0.x.0): New features, backward compatible
  • PATCH (0.0.x): Bug fixes, backward compatible

Current: 0.1.0 (initial release)

Post-Release

  1. Verify release on crates.io: https://crates.io/crates/aprender
  2. Check documentation: https://docs.rs/aprender
  3. Monitor GitHub Actions for completion
  4. Announce release (if applicable)

Rollback Procedure

If a release has critical issues:

  1. Yank the bad version from crates.io:

    cargo yank --vers 0.1.1
  2. Fix the issue and release a patch version

  3. Never delete tags - use new versions instead

Quality Metrics Maintained

  • TDG Score: 95.6/100 (A+)
  • Test Coverage: 97.72%
  • Mutation Score: 85.3%
  • Repository Score: 95.0/100 (A+)
  • Zero SATD comments
  • Cyclomatic complexity ≤ 10
  • Cognitive complexity ≤ 15