Skip to content

Publish to PyPI

Publish to PyPI #52

Workflow file for this run

name: Publish to PyPI
on:
push:
tags:
- v*.*.*
jobs:
wheel-linux-aarch64:
name: Build Linux wheels (Aarch64)
runs-on: ubuntu-22.04-arm
if: "startsWith(github.ref, 'refs/tags/v')"
steps:
- uses: actions/checkout@v4
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: aarch64
CIBW_BUILD: 'cp*-manylinux_aarch64'
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-manylinux_aarch64
path: dist/*
wheel-linux-x86_64:
name: Build Linux wheels (x86-64)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: 'cp*-manylinux_x86_64'
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-manylinux_x86_64
path: dist/*
wheel-macos-x86_64:
name: Build MacOS wheels (x86-64)
runs-on: macOS-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-apple-darwin
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: 'cp*-macosx_x86_64'
CIBW_ENVIRONMENT: MACOSX_DEPLOYMENT_TARGET=12.0
CIBW_TEST_SKIP: "*"
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-macosx_x86_64
path: dist/*
wheel-macos-aarch64:
name: Build MacOS wheels (Aarch64)
runs-on: macOS-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: arm64
CIBW_BUILD: 'cp*-macosx_arm64'
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-macosx_arm64
path: dist/*
wheel-win32-x86_64:
name: Build Windows wheels (x86-64)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: AMD64
CIBW_BUILD: 'cp*-win_amd64'
with:
output-dir: dist
- uses: actions/upload-artifact@v4
with:
name: wheels-win_amd64
path: dist/*
sdist:
runs-on: ubuntu-latest
name: Build source distribution
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: 3.13
- name: Install CI requirements
run: python -m pip install -U build maturin
- name: Build source distribution without vendored sources
run: python -m build -s . -n
- uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*
upload:
environment: PyPI
runs-on: ubuntu-latest
permissions:
id-token: write
name: Upload
needs:
- wheel-linux-aarch64
- wheel-linux-x86_64
- wheel-macos-aarch64
- wheel-macos-x86_64
- wheel-win32-x86_64
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Set up Python 3.10
uses: actions/setup-python@v1
with:
python-version: "3.10"
- name: Install CI requirements
run: python -m pip install -U -r ci/requirements.txt
- name: Build source tarball with vendored sources
run: python setup.py vendor sdist
- name: Download built wheels
uses: actions/download-artifact@v2
with:
name: wheels
path: dist
- name: Publish distributions to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
release:
environment: GitHub Releases
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/v')"
name: Release
needs: upload
permissions: write-all
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Release a Changelog
uses: rasmus-saks/[email protected]
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'