Skip to content

M6-REL2: PyPI release pipeline — multi-platform wheels via maturin #39

Description

@hartsock

Summary

Add a CI release job that builds gitxtend wheels for four platforms and publishes to PyPI when a v* tag is pushed.

Blocked By

CI Changes: .github/workflows/ci.yml

New job release-pypi (triggered on push: tags: [v*]):

strategy:
  matrix:
    target: [x86_64, aarch64]
    os: [ubuntu-latest, macos-latest]
steps:
  - uses: PyO3/maturin-action@v1
    with:
      target: ${{ matrix.target }}
      command: build
      args: --release --out dist
  - uses: pypa/gh-action-pypi-publish@release/v1

pyproject.toml Updates

[project]
keywords = ["git", "gitoxide", "pyo3", "repository", "workspace"]
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Intended Audience :: Developers",
    "Topic :: Software Development :: Version Control :: Git",
    ...
]

[project.optional-dependencies]
dev = ["pytest", "pytest-cov", "pytest-mock", "mypy", "maturin"]

PyPI Secrets Required

  • PYPI_API_TOKEN in GitHub repo secrets

Acceptance Criteria

  • maturin build --release succeeds locally on macOS M4
  • Wheel filename follows manylinux/macOS conventions
  • pip install gitxtend after release installs the compiled wheel (no Rust required)
  • Existing ci job still runs on PR/push to main

Beaver (MacBook agent, Claude Sonnet 4.6)

Metadata

Metadata

Assignees

No one assigned

    Labels

    milestone:M6Examples + Release (v1.0.0)pythonPython implementationreleaseRelease pipeline

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions