Skip to content

Commit

Permalink
Build and publish wheels on CI
Browse files Browse the repository at this point in the history
  • Loading branch information
messense committed Aug 7, 2021
1 parent 29bb1d0 commit 9d9005c
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 24 deletions.
189 changes: 189 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
name: CI

on:
push:
branches: [ main ]
tags: [ "v*" ]
pull_request:
branches: [ main ]

jobs:
macos:
runs-on: macos-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
target: aarch64-apple-darwin
profile: minimal
default: true
- name: Build wheels - x86_64
uses: messense/maturin-action@v1
with:
target: x86_64
args: -i python --release --out dist
- name: Install built wheel - x86_64
run: |
pip install --force-reinstall dist/horapy*.whl
cd && python -c "import horapy"
- name: Build wheels - universal2
if: ${{ matrix.python-version >= '3.8' }}
uses: messense/maturin-action@v1
with:
args: -i python --release --universal2 --out dist --no-sdist
- name: Install built wheel - universal2
if: ${{ matrix.python-version >= '3.8' }}
run: |
pip install --force-reinstall dist/horapy*_universal2.whl
cd && python -c "import horapy"
- name: Upload wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist

windows:
runs-on: windows-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
target: [x64, x86]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.target }}
- name: Update rustup
run: rustup self update
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
default: true
- name: Build wheels
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
args: -i python --release --out dist --no-sdist
- name: Install built wheel
shell: bash
run: |
pip install --force-reinstall dist/horapy*.whl
cd && python -c "import horapy"
- name: Upload wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist

linux:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
target: [x86_64, i686]
steps:
- uses: actions/checkout@v2
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
default: true
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Build Wheels
uses: messense/maturin-action@v1
with:
rust-toolchain: nightly
target: ${{ matrix.target }}
manylinux: auto
args: -i python${{ matrix.python-version }} --release --out dist --no-sdist
- name: Install built wheel
if: matrix.target == 'x86_64'
run: |
pip install --force-reinstall dist/horapy*.whl
cd && python -c "import horapy"
- name: Upload wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist

linux-cross:
runs-on: ubuntu-latest
strategy:
matrix:
python: [
{ version: '3.6', abi: 'cp36-cp36m' },
{ version: '3.7', abi: 'cp37-cp37m' },
{ version: '3.8', abi: 'cp38-cp38' },
{ version: '3.9', abi: 'cp39-cp39' },
]
target: [aarch64, armv7, s390x, ppc64le, ppc64]
steps:
- uses: actions/checkout@v2
- name: Build Wheels
uses: messense/maturin-action@v1
env:
PYO3_CROSS_LIB_DIR: /opt/python/${{ matrix.python.abi }}/lib
with:
rust-toolchain: nightly
target: ${{ matrix.target }}
manylinux: auto
args: -i python3.9 --release --out dist --no-sdist
- uses: uraimo/[email protected]
# run-on-arch-action doesn't have ppc64 support
if: matrix.target != 'ppc64'
name: Install built wheel
with:
arch: ${{ matrix.target }}
distro: ubuntu20.04
githubToken: ${{ github.token }}
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-pip software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt-get update
apt-get install -y python3.6 python3.7 python3.9
run: |
PYTHON=python${{ matrix.python.version }}
$PYTHON -m pip install -U pip
$PYTHON -m pip install --force-reinstall dist/horapy*.whl
cd && $PYTHON -c 'import horapy'
- name: Upload wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist

release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [ macos, windows, linux, linux-cross ]
steps:
- uses: actions/download-artifact@v2
with:
name: wheels
- uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Publish to PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
pip install --upgrade twine
twine upload --skip-existing *
22 changes: 0 additions & 22 deletions .github/workflows/rust.yml

This file was deleted.

4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ["maturin>=0.10,<0.11"]
requires = ["maturin>=0.11,<0.12"]
build-backend = "maturin"

[project]
Expand All @@ -8,4 +8,4 @@ dependencies = ["numpy>=1.6.0"]
classifiers = [
"Programming Language :: Python",
"Programming Language :: Rust"
]
]

0 comments on commit 9d9005c

Please sign in to comment.