Skip to content

Preview Release

Preview Release #14

# CI to release the project for Linux, Windows, and MacOS
# The purpose of this action is to verify if the release builds are working or not.
name: Preview Release
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
env:
UV_SYSTEM_PYTHON: 1
jobs:
macos:
if: false
runs-on: macos-13
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- 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 --no-sdist
- 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 --no-sdist
- name: Install build wheel - universal2
run: |
uv pip install --force-reinstall dist/robyn*_universal2.whl
cd ~ && python -c 'import robyn'
windows:
if: false
runs-on: windows-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
target: [x64, x86]
steps:
- uses: actions/checkout@v4
- 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 --no-sdist
- name: Install build wheel
shell: bash
run: |
uv pip install --force-reinstall dist/robyn*.whl
cd ~ && python -c 'import robyn'
linux:
if: false
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
target: [x86_64, i686]
steps:
- uses: actions/checkout@v4
- 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 --no-sdist
- name: Install build wheel
if: matrix.target == 'x86_64'
run: |
uv pip install --force-reinstall dist/robyn*.whl
cd ~ && python -c 'import robyn'
linux-cross:
runs-on: ubuntu-latest
strategy:
fail-fast: false
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" },
]
target: [aarch64, armv7]
steps:
- uses: actions/checkout@v4
- 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 --no-sdist
- uses: uraimo/run-on-arch-action@v2
name: Install build wheel
with:
arch: ${{ matrix.target }}
distro: ubuntu_latest
githubToken: ${{ github.token }}
# Mount the dist directory as /artifacts in the container
dockerRunArgs: |
--volume "${PWD}/dist:/artifacts"
install: |
# Install system dependencies
apt update -y
apt install -y gcc musl-dev curl ca-certificates # this is needed for psutil
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
ls -lrth $HOME/.local/bin/
ls -lrth /root/.local/bin/
whoami
pwd
# Install target Python version using uv (downloads ARM build automatically)
uv python install ${{ matrix.python.version }}
export PATH="$HOME/.local/bin/:$PATH"
run: |
source $HOME/.local/bin/env
# export PATH="$HOME/.local/bin/:$PATH"
ls -lrth /artifacts
# Verify Python installation
PYTHON=python${{ matrix.python.version }}
# source .venv/bin/activate
whereis $PYTHON
which python || which python3
python --version
echo "Verified python installation."
# Install the wheel using uv (no venv needed in CI containers)
uv pip install --python ${{ matrix.python.version }} --upgrade pip setuptools wheel
uv pip install --python ${{ matrix.python.version }} --force-reinstall /artifacts/robyn*.whl
echo "Done installing the wheel."
# Test the installation
python -c 'import robyn; print("✅ Robyn imported successfully!")'
echo "Test the installation the wheel."