Skip to content

Merge pull request #46 from GStechschulte/split-rule-bug #42

Merge pull request #46 from GStechschulte/split-rule-bug

Merge pull request #46 from GStechschulte/split-rule-bug #42

Workflow file for this run

name: CI
on:
push:
branches:
- main
- master
tags:
- "*"
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
manylinux: 2_28
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: linux-${{ matrix.target }}-wheels
path: dist
# - name: pytest
# if: ${{ startsWith(matrix.target, 'x86_64') }}
# shell: bash
# run: |
# set -e
# pip install --find-links dist --force-reinstall 'pymc-bart-rs[all]'
# pip install pytest
# pytest
# - name: pytest
# if: ${{ !startsWith(matrix.target, 'x86') }}
# uses: uraimo/[email protected]
# with:
# arch: ${{ matrix.target }}
# distro: ubuntu22.04
# githubToken: ${{ github.token }}
# install: |
# apt-get update
# apt-get install -y --no-install-recommends python3 python3-pip
# pip3 install -U pip pytest
# run: |
# set -e
# pip3 install --find-links dist --force-reinstall 'pymc-bart-rs[all]'
# pytest
windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target: [x64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: windows-${{ matrix.target }}-wheels
path: dist
# - name: pytest
# if: ${{ !startsWith(matrix.target, 'aarch64') }}
# shell: bash
# run: |
# set -e
# pip install "pymc-bart-rs[all]" --find-links dist --force-reinstall
# pip install pytest
# pytest
macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: macos-${{ matrix.target }}-wheels
path: dist
# - name: pytest
# if: ${{ startsWith(matrix.target, 'aarch64') }}
# shell: bash
# run: |
# set -e
# pip install 'pymc-bart-rs[all]' --find-links dist --force-reinstall
# pip install pytest
# pytest
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: sdist
path: dist
release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, windows, macos, sdist]
# Combine all the wheels and sdists into a single directory
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: linux-x86_64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: linux-aarch64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: windows-x64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: macos-x86_64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: macos-aarch64-wheels
path: dist
- uses: actions/download-artifact@v4
with:
name: sdist
path: dist
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --skip-existing dist/*
test:
runs-on: ubuntu-latest
needs: [linux]
steps:
- name: Checkout
uses: actions/checkout@v4
# Download the artifact from your Linux x86_64 job (adjust if you need other arches)
- name: Download Wheels
uses: actions/download-artifact@v4
with:
name: linux-x86_64-wheels
path: dist
- name: Install Python & Dependencies
uses: actions/setup-python@v5
with:
python-version: "3.10"
# Optionally run your Rust tests here (or in the linux job itself)
- name: Rust tests
run: cargo test --all
- name: Install wheel and Python test dependencies
run: |
pip install --force-reinstall --find-links dist 'pymc-bart-rs[all]'
pip install pytest
- name: Run Python tests
run: pytest