Skip to content

Update CI.yml

Update CI.yml #225

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
# concurrency:
# group: ${{ github.workflow }}-${{ github.ref }}
# cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0 # TODO: remove this when we cache the builds
jobs:
check_version:
name: Check version
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.check_version.outputs.changed }}
version: ${{ steps.check_version.outputs.version }}
prev_version: ${{ steps.check_version.outputs.prev_version }}
steps:
- uses: actions/checkout@v4
- id: check_version
uses: radumarias/action-check-version-changed-rust@v1
test_rust_macos_windows:
runs-on: ${{ matrix.runner }}
strategy:
matrix:
runner: [macos-latest, windows-latest ]
steps:
- uses: actions/checkout@v4
- name: rustup
run: rustup update
- name: build
run: |
cargo build --all-targets --all-features
cargo build --release --all-targets --all-features
- name: fmt check
run: cargo fmt --all --check
- name: check
run: cargo check --all-targets
# - name: clippy
# run: cargo clippy --all-targets
- name: tests
run: cargo test --release --all-features
test_rust_linux:
runs-on: ubuntu-latest
steps:
- name: install
run: |
sudo apt-get update
sudo apt-get install libatomic1
- uses: actions/checkout@v4
- name: rustup
run: rustup update
- name: build
run: |
cargo build --all-targets --all-features
cargo build --release --all-targets --all-features
- name: fmt check
run: cargo fmt --all --check
- name: check
run: cargo check --all-targets
# - name: clippy
# run: cargo clippy --all-targets
- name: tests
run: cargo test --release --all-features
test_py_linux:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ 3.7, 3.8, 3.9, "3.10", "3.11", "3.12" ]
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m venv .env
source .env/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
maturin develop --release
- name: Run tests
run: |
source .env/bin/activate
./test.sh
test_py_macos:
runs-on: macos-latest
strategy:
matrix:
python-version: [ 3.8, 3.9, "3.10", "3.11", "3.12" ]
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m venv .env
source .env/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
maturin develop --release
- name: Run tests
run: |
source .env/bin/activate
./test.sh
test_py_windows:
runs-on: windows-latest
strategy:
matrix:
python-version: [ 3.7, 3.8, 3.9, "3.10", "3.11", "3.12" ]
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m venv .env
.env\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txt
maturin develop --release
- name: Run tests
run: |
.env\Scripts\activate
cmd /c test.bat
package_linux:
needs: [test_rust_linux, test_rust_macos_windows, test_py_linux, test_py_macos, test_py_windows]
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
# - runner: ubuntu-latest
# target: aarch64
- runner: ubuntu-latest
target: armv7
- runner: ubuntu-latest
target: s390x
- runner: ubuntu-latest
target: ppc64le
steps:
- uses: actions/checkout@v4
- name: Setup Rust
run: rustup update
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist
package_windows:
needs: [test_rust_linux, test_rust_macos_windows, test_py_linux, test_py_macos, test_py_windows]
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
# - runner: windows-latest
# target: x86
steps:
- uses: actions/checkout@v4
- name: Setup Rust
run: rustup update
- uses: actions/setup-python@v5
with:
python-version: '3.12'
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist
package_macos:
needs: [test_rust_linux, test_rust_macos_windows, test_py_linux, test_py_macos, test_py_windows]
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-latest
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- name: Setup Rust
run: rustup update
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist
package_sdist:
needs: [test_rust_linux, test_rust_macos_windows, test_py_linux, test_py_macos, test_py_windows]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust
run: rustup update
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist
release:
name: Create release and publish to PyPI
if: needs.check_version.outputs.changed == 'true' && github.event_name == 'push'
needs: [ check_version, package_linux, package_windows, package_macos, package_sdist ]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: ncipollo/release-action@v1
name: Create release
with:
name: Release v${{ needs.check_version.outputs.version }}
tag: v${{ needs.check_version.outputs.version }}
generateReleaseNotes: true
- uses: actions/download-artifact@v4
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing wheels-*/*