initial py-rattler release pipeline #16
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Python Release" | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "The version to tag, without the leading 'v'. If omitted, will initiate a dry run (no uploads)." | |
type: string | |
sha: | |
description: "The full sha of the commit to be released. If omitted, the latest commit on the default branch will be used." | |
default: "" | |
type: string | |
pull_request: | |
paths: | |
# When we change pyproject.toml, we want to ensure that the maturin builds still work | |
- py-rattler/pyproject.toml | |
# And when we change this workflow itself... | |
- .github/workflows/python-release.yaml | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
PACKAGE_NAME: py_rattler | |
PYTHON_VERSION: "3.11" | |
CARGO_INCREMENTAL: 0 | |
CARGO_NET_RETRY: 10 | |
CARGO_TERM_COLOR: always | |
RUSTUP_MAX_RETRIES: 10 | |
jobs: | |
sdist: | |
name: Build sdist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: "Build sdist" | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
command: sdist | |
args: --out dist | |
- name: "Test sdist" | |
run: | | |
rustup default $(cat rust-toolchain) | |
pip install py-rattler/dist/${{ env.PACKAGE_NAME }}-*.tar.gz --force-reinstall | |
- name: "Upload sdist" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
windows: | |
runs-on: windows-latest | |
name: Build ${{ matrix.platform.target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- target: x86_64-pc-windows-msvc | |
arch: x64 | |
- target: i686-pc-windows-msvc | |
arch: x86 | |
# ring 0.16.20 doesnt support this platform yet | |
# - target: aarch64-pc-windows-msvc | |
# arch: x64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
architecture: ${{ matrix.platform.arch }} | |
- name: "Build wheels (rustls-tls)" | |
uses: PyO3/maturin-action@v1 | |
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --no-default-features --features rustls-tls | |
- name: "Build wheels (native-tls)" | |
uses: PyO3/maturin-action@v1 | |
if: ${{ startsWith(matrix.platform.target, 'aarch64') }} | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --no-default-features --features native-tls | |
- name: "Test wheel" | |
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} | |
shell: bash | |
run: | | |
python -m pip install py-rattler/dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
linux: | |
runs-on: ubuntu-latest | |
name: Build ${{ matrix.target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
- i686-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
architecture: x64 | |
- name: "Build wheels" | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.target }} | |
manylinux: auto | |
args: --release --out dist --no-default-features --features rustls-tls | |
- name: "Test wheel" | |
if: ${{ startsWith(matrix.target, 'x86_64') }} | |
run: | | |
pip install py-rattler/dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
linux-cross: | |
runs-on: ubuntu-latest | |
name: Build ${{ matrix.platform.target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- target: aarch64-unknown-linux-gnu | |
arch: aarch64 | |
- target: armv7-unknown-linux-gnueabihf | |
arch: armv7 | |
# ring 0.16.20 doesnt support these platforms yet | |
# - target: s390x-unknown-linux-gnu | |
# arch: s390x | |
# - target: powerpc64le-unknown-linux-gnu | |
# arch: ppc64le | |
# - target: powerpc64-unknown-linux-gnu | |
# arch: ppc64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: "Build wheels" | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.platform.target }} | |
manylinux: auto | |
docker-options: ${{ matrix.platform.maturin_docker_options }} | |
args: --release --out dist --no-default-features --features rustls-tls | |
- uses: uraimo/run-on-arch-action@v2 | |
if: matrix.platform.arch != 'ppc64' | |
name: Test wheel | |
with: | |
arch: ${{ matrix.platform.arch }} | |
distro: ubuntu20.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y --no-install-recommends python3 python3-pip | |
pip3 install -U pip | |
run: | | |
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links py-rattler/dist/ --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
linux-cross-native-tls: | |
runs-on: ubuntu-latest | |
name: Build ${{ matrix.platform.target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- target: s390x-unknown-linux-gnu | |
arch: s390x | |
- target: powerpc64le-unknown-linux-gnu | |
arch: ppc64le | |
- target: powerpc64-unknown-linux-gnu | |
arch: ppc64 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: "Build wheels" | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.platform.target }} | |
manylinux: auto | |
docker-options: ${{ matrix.platform.maturin_docker_options }} | |
args: --release --out dist --no-default-features --features native-tls | |
- uses: uraimo/run-on-arch-action@v2 | |
if: matrix.platform.arch != 'ppc64' | |
name: Test wheel | |
with: | |
arch: ${{ matrix.platform.arch }} | |
distro: ubuntu20.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y --no-install-recommends python3 python3-pip | |
pip3 install -U pip | |
run: | | |
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links py-rattler/dist/ --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
musllinux: | |
runs-on: ubuntu-latest | |
name: Build ${{ matrix.target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-musl | |
- i686-unknown-linux-musl | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
architecture: x64 | |
- name: "Build wheels (rustls-tls)" | |
if: ${{ !startsWith(matrix.platform.target, 'i686') }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.target }} | |
manylinux: musllinux_1_2 | |
args: --release --out dist --no-default-features --features rustls-tls | |
- name: "Build wheels (native-tls)" | |
if: ${{ startsWith(matrix.platform.target, 'i686') }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.target }} | |
manylinux: musllinux_1_2 | |
args: --release --out dist --no-default-features --features native-tls | |
- name: "Test wheel" | |
if: matrix.target == 'x86_64-unknown-linux-musl' | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: alpine:latest | |
options: -v ${{ github.workspace }}/py-rattler:/py-rattler -w /py-rattler | |
run: | | |
apk add py3-pip | |
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
musllinux-cross: | |
runs-on: ubuntu-latest | |
name: Build ${{ matrix.platform.target }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- target: aarch64-unknown-linux-musl | |
arch: aarch64 | |
- target: armv7-unknown-linux-musleabihf | |
arch: armv7 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: "Build wheels" | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: ${{ matrix.platform.target }} | |
manylinux: musllinux_1_2 | |
args: --release --out dist --no-default-features --features rustls-tls | |
docker-options: ${{ matrix.platform.maturin_docker_options }} | |
- uses: uraimo/run-on-arch-action@v2 | |
name: Test wheel | |
with: | |
arch: ${{ matrix.platform.arch }} | |
distro: alpine_latest | |
githubToken: ${{ github.token }} | |
install: | | |
apk add py3-pip | |
run: | | |
pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links py-rattler/dist/ --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
macos-x86_64: | |
runs-on: macos-latest | |
name: Build x86_64-macos | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
architecture: x64 | |
- name: "Build wheels - x86_64" | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: py-rattler | |
target: x86_64 | |
args: --release --out dist --no-default-features --features rustls-tls | |
- name: "Test wheel - x86_64" | |
run: | | |
pip install py-rattler/dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist | |
macos-universal: | |
runs-on: macos-latest | |
name: Build universal2-apple-macos | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ inputs.sha }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
architecture: x64 | |
- name: "Build wheels - universal2" | |
uses: PyO3/maturin-action@v1 | |
with: | |
args: --release --target universal2-apple-darwin --out dist --no-default-features --features rustls-tls | |
working-directory: py-rattler | |
- name: "Test wheel - universal2" | |
run: | | |
pip install py-rattler/dist/${{ env.PACKAGE_NAME }}-*universal2.whl --force-reinstall | |
- name: "Upload wheels" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: py-rattler/dist |