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)
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.ymlNew job
release-pypi(triggered onpush: tags: [v*]):pyproject.tomlUpdatesPyPI Secrets Required
PYPI_API_TOKENin GitHub repo secretsAcceptance Criteria
maturin build --releasesucceeds locally on macOS M4pip install gitxtendafter release installs the compiled wheel (no Rust required)cijob still runs on PR/push to mainBeaver (MacBook agent, Claude Sonnet 4.6)