Skip to content

Release 0.72.0

Release 0.72.0 #150

Workflow file for this run

# CI to release the project for Linux, Windows, and MacOS
name: Release CI
on:
push:
tags:
- v*
workflow_dispatch:
inputs:
enable_linux_cross:
description: 'Enable Linux cross-compilation (ARM64/ARMv7)'
required: false
default: true
type: boolean
env:
UV_SYSTEM_PYTHON: 1
jobs:
macos:
runs-on: macos-13
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v3
- name: Install uv
uses: astral-sh/setup-uv@v3
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- name: Build wheels - x86_64
uses: PyO3/maturin-action@v1
with:
target: x86_64
args: -i python --release --out dist
- name: Install build wheel - x86_64
run: |
uv pip install --force-reinstall dist/robyn*.whl
cd ~ && python -c 'import robyn'
- name: Build wheels - universal2
uses: PyO3/maturin-action@v1
with:
args: -i python --release --universal2 --out dist
- name: Install build wheel - universal2
run: |
uv pip install --force-reinstall dist/robyn*_universal2.whl
cd ~ && python -c 'import robyn'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-universal-${{ matrix.python-version }}
path: dist
windows:
runs-on: windows-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
target: [x64, x86]
steps:
- uses: actions/checkout@v3
- name: Install uv
uses: astral-sh/setup-uv@v3
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.target }}
- uses: dtolnay/rust-toolchain@stable
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: -i python --release --out dist
- name: Install build wheel
shell: bash
run: |
uv pip install --force-reinstall dist/robyn*.whl
cd ~ && python -c 'import robyn'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-${{ matrix.target }}-${{ matrix.python-version }}
path: dist
linux:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
target: [x86_64, i686]
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- name: Install uv
uses: astral-sh/setup-uv@v3
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i python${{ matrix.python-version }} --release --out dist
- name: Install build wheel
if: matrix.target == 'x86_64'
run: |
uv pip install --force-reinstall dist/robyn*.whl
cd ~ && python -c 'import robyn'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-${{ matrix.target }}-${{ matrix.python-version }}
path: dist
linux-cross:
runs-on: ubuntu-latest
if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.enable_linux_cross)
strategy:
matrix:
python:
[
{ version: "3.9", abi: "cp39-cp39" },
{ version: "3.10", abi: "cp310-cp310" },
{ version: "3.11", abi: "cp311-cp311" },
{ version: "3.12", abi: "cp312-cp312" },
{ version: "3.13", abi: "cp313-cp313" },
]
target: [aarch64, armv7]
steps:
- uses: actions/checkout@v3
- name: Build Wheels
uses: PyO3/maturin-action@v1
env:
PYO3_CROSS_LIB_DIR: /opt/python/${{ matrix.python.abi }}/lib
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i python${{matrix.python.version}} --release --out dist
- uses: uraimo/run-on-arch-action@v2
name: Install build wheel
with:
arch: ${{ matrix.target }}
distro: ubuntu22.04
githubToken: ${{ github.token }}
# Mount the dist directory as /artifacts in the container
dockerRunArgs: |
--volume "${PWD}/dist:/artifacts"
install: |
apt update -y
apt install -y software-properties-common
add-apt-repository -y ppa:deadsnakes/ppa
apt update -y
apt install -y gcc musl-dev python3-dev python${{ matrix.python.version }} python${{ matrix.python.version }}-venv
run: |
ls -lrth /artifacts
python${{ matrix.python.version }} -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install --force-reinstall /artifacts/robyn*.whl
cd ~ && python -c 'import robyn'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ github.job }}-${{ matrix.target }}-${{ matrix.python.version }}-${{ matrix.python.abi }}
path: dist
merge:
name: Building Single Artifact
runs-on: ubuntu-latest
needs: [macos, windows, linux, linux-cross]
if: always() && needs.macos.result == 'success' && needs.windows.result == 'success' && needs.linux.result == 'success' && (needs.linux-cross.result == 'success' || needs.linux-cross.result == 'skipped')
steps:
- name: Downloading all Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
pattern: wheels-*
merge-multiple: true
- run: |
echo "Listing directories"
ls -R
- name: Uploading Artifact's Bundle
uses: actions/upload-artifact@v4
with:
name: wheels
path: artifacts
release:
name: Release
runs-on: ubuntu-latest
needs: [macos, windows, linux, linux-cross, merge]
if: always() && needs.merge.result == 'success'
steps:
- uses: actions/download-artifact@v4
with:
name: wheels
- name: Install uv
uses: astral-sh/setup-uv@v3
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Publish to PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
uv pip install --upgrade twine
twine upload --skip-existing *.whl