Skip to content

Latest commit

 

History

History
64 lines (45 loc) · 2.44 KB

File metadata and controls

64 lines (45 loc) · 2.44 KB

Releasing OxyJWT

This checklist is for maintainers publishing 0.7.x (and later) to PyPI via the GitHub Actions Release workflow.

Before tagging

  1. Version alignment — these must match:

    • pyproject.toml[project].version
    • rust/Cargo.toml[package].version
    • python/oxyjwt/__init__.py__version__
  2. Changelog — update CHANGELOG.md and docs-site/docs/changelog.md (section for the release; add release date when publishing).

  3. Tests (from repo root):

    cargo fmt --manifest-path rust/Cargo.toml --check
    cargo clippy --manifest-path rust/Cargo.toml --all-targets -- -D warnings
    cargo test --manifest-path rust/Cargo.toml
    maturin develop --release --pip-path "$(command -v pip3)"
    python -m pytest
    mkdocs build --strict -f docs-site/mkdocs.yml

    Optional extended benchmark (slower, not required for every PR):

    OXYJWT_BENCHMARK=1 python -m pytest -m benchmark tests/test_benchmark_jwt_libraries.py
  4. Smoke import (after maturin develop):

    python -c "import oxyjwt; print(oxyjwt.__version__)"
  5. Optional wheel check:

    maturin build --release --out dist

Publish

  1. Commit all release-prep changes on main.

  2. Merge devmain, then create and push an annotated tag (example for 0.7.0):

    git tag -a v0.7.0 -m "Release 0.7.0"
    git push origin v0.7.0
  3. The Release workflow runs full CI via workflow_call, then builds wheels (Linux x86_64/aarch64, macOS, Windows) + sdist and publishes to PyPI only if CI passes (requires the pypi environment and Trusted Publishing).

  4. On GitHub, create a Release from the tag. Use .github/RELEASE_NOTES_v0.7.0.md or the 0.7.0 section in CHANGELOG.md as the release notes body.

After release

  • Confirm the new version on PyPI.
  • Verify pip install oxyjwt==<version> on a clean venv.
  • Update supported-version wording in SECURITY.md if a new line is current.

Notes

  • Linux aarch64 wheels use the rust_crypto feature (see release.yml); x86_64 uses default aws_lc_rs.
  • Benchmark artifacts are optional; see docs-site/docs/benchmarks.md.