Skip to content

2.0.0 alpha 2

2.0.0 alpha 2 #2

Workflow file for this run

---
name: Release
on:
release:
types: [published]
env:
COLUMNS: 150
jobs:
# Build source distribution
build-sdist:
name: Build sdist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
rust-toolchain: stable
- uses: actions/upload-artifact@v4
with:
name: pypi_files_sdist
path: dist
# Build wheels for all supported platforms
build-wheels:
name: Build wheels on ${{ matrix.os }} (${{ matrix.target }})
strategy:
fail-fast: false
matrix:
include:
- os: linux
target: x86_64
runs-on: ubuntu-latest
manylinux: auto
- os: linux
target: aarch64
runs-on: ubuntu-latest
manylinux: auto
- os: macos
target: aarch64
runs-on: macos-latest
- os: windows
target: x86_64
runs-on: windows-latest
- os: windows
target: aarch64
python-architecture: arm64
runs-on: windows-11-arm
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.13"
architecture: ${{ matrix.python-architecture || 'x64' }}
- name: Install twine
run: pip install -U twine
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: ${{ matrix.manylinux || 'auto' }}
args: --release --out dist --interpreter 3.10 3.11 3.12 3.13 3.14
rust-toolchain: stable
docker-options: -e CI
before-script-linux: |
if command -v yum &> /dev/null; then
yum install -y openssl-devel cmake3 perl-IPC-Cmd perl-Time-Piece
which cmake3 && ln -sf $(which cmake3) /usr/local/bin/cmake || true
elif command -v apk &> /dev/null; then
apk add --no-cache openssl-dev cmake make perl
elif command -v apt-get &> /dev/null; then
apt-get update && apt-get install -y libssl-dev cmake perl
fi
- name: List dist files
run: ls -lh dist/
shell: bash
- name: Check wheels
run: twine check --strict dist/*
- uses: actions/upload-artifact@v4
with:
name: pypi_files_${{ matrix.os }}_${{ matrix.target }}
path: dist
# Publish to PyPI and attach assets to GitHub Release
publish:
name: Publish to PyPI
needs: [build-sdist, build-wheels]
runs-on: ubuntu-latest
environment:
name: release
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: pypi_files_*
merge-multiple: true
path: dist
- name: List dist files
run: |
ls -lh dist/
echo "Total files: $(ls dist | wc -l)"
- name: Verify wheel integrity
run: for whl in dist/*.whl; do unzip -qt "$whl"; done
- name: Install uv
uses: astral-sh/setup-uv@v2
- name: Publish to PyPI
run: uv publish --trusted-publishing always
- name: Upload assets to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: dist/*