Skip to content

ci(releases): build wheels for Python package #4

ci(releases): build wheels for Python package

ci(releases): build wheels for Python package #4

Workflow file for this run

name: Python package
on:
push:
branches:
- main
- master
tags:
- release-*cli-*
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- x86
- x86_64
steps:
- uses: actions/checkout@v4
- if: matrix.target == 'x86_64'
name: Build wheels (static openssl)
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --features vendored-openssl
sccache: "true"
manylinux: auto
before-script-linux: |
yum install -y perl-IPC-Cmd
- if: matrix.target == 'x86'
name: Build wheels (shared openssl)
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: "true"
manylinux: auto
before-script-linux: |
yum install -y openssl-devel
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-${{ matrix.target }}
path: dist
windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target:
- x64
- x86
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-${{ matrix.target }}
path: dist
macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
target:
- aarch64
- x86_64
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-${{ matrix.target }}
path: dist
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}
path: dist
merge:
name: Merge wheels
runs-on: ubuntu-latest
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v4
with:
merge-multiple: true
path: wheels
- uses: actions/upload-artifact@v4
with:
name: wheels
path: wheels
test-pip:
needs: merge
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- windows-latest
- ubuntu-latest
- macos-latest
steps:
- uses: actions/download-artifact@v4
with:
name: wheels
path: wheels
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install taplo --no-index --find-links wheels/
- run: taplo help
release:
name: Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: test-pip
steps:
- uses: actions/download-artifact@v4
with:
name: wheels
path: wheels
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing wheels/*