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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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