Skip to content

again...

again... #135

Workflow file for this run

# This file is autogenerated by maturin v0.14.17
# To update, run
#
# maturin generate-ci github
#
name: CI
on:
push:
branches:
- main
- master
tags:
- "*"
paths-ignore:
- CHANGELOG.md
- README.md
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
rust_checks:
name: Checks for Rust
runs-on: ubuntu-latest
# env:
# RUSTFLAGS: "-Dwarnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
components: clippy,llvm-tools
toolchain: nightly
- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
key: coverage-cargo-python-linux # ${{ matrix.os }}
continue-on-error: true
- name: Install carge llvm-cov
run: cargo install cargo-llvm-cov
- name: Install X components
run: sudo apt-get install -y libxinerama-dev libxcursor-dev libxfixes-dev libxft-dev libpango1.0-dev libpangoxft-1.0-0 libpangocairo-1.0-0
- name: Run Clippy
run: cargo clippy --features ui,use_rayon
- name: Run tests and coverage
run: |
source <(cargo llvm-cov show-env --export-prefix)
export CARGO_TARGET_DIR=$CARGO_LLVM_COV_TARGET_DIR
export CARGO_INCREMENTAL=1
cargo llvm-cov clean --workspace
cargo test --features ui,use_rayon # FIXME: ui
cargo llvm-cov --no-run --lcov --output-path coverage.lcov
- uses: codecov/codecov-action@v3
with:
files: coverage.lcov
name: rust-linux # ${{ matrix.os }}
python_checks:
name: Checks for Python
runs-on: ubuntu-latest
# env:
# RUSTFLAGS: "-Dwarnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
components: clippy,llvm-tools
toolchain: nightly
- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
key: coverage-cargo-python-linux # ${{ matrix.os }}
continue-on-error: true
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: setup uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Install mypy
run: uv pip install --upgrade mypy
- name: Run mypy
run: mypy --cache-dir .mypy_cache/ --install-types --ignore-missing-imports --non-interactive --show-traceback py-rgrow/rgrow/
- name: Run Ruff on Python code
uses: chartboost/ruff-action@v1
with:
src: "./py-rgrow"
- name: Install carge llvm-cov
run: cargo install cargo-llvm-cov
- name: Setup virtual environment
run: |
uv venv venv
source venv/bin/activate
uv pip install -U pip setuptools wheel
- name: Install maturin and pytest
run: |
source venv/bin/activate
uv pip install maturin pytest pytest-cov hypothesis
# - name: Install X components
# run: sudo apt-get install -y gdb libxinerama-dev libxcursor-dev libxfixes-dev libxft-dev libpango1.0-dev libpangoxft-1.0-0 libpangocairo-1.0-0
- name: Run coverage # cargo clippy --features python,use_rayon
run: |
source venv/bin/activate
cd py-rgrow
maturin develop
python -m pytest -vvv --debug --cov=rgrow --cov-report xml
- uses: codecov/codecov-action@v3
with:
files: py-rgrow/coverage.xml
name: python-linux # ${{ matrix.os }}
linux:
name: Python Linux builds
needs: [python_checks]
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64] # aarch64, armv7l
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
# - name: Install X components
# run: sudo apt-get install -y libxinerama-dev libxcursor-dev libxfixes-dev libxft-dev libpango1.0-dev libpangoxft-1.0-0 libpangocairo-1.0-0
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
container: off
sccache: "true"
manylinux: "auto"
working-directory: py-rgrow
rust-toolchain: nightly
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: py-rgrow/dist
# deploy-docs:
# runs-on: ubuntu-latest
# needs: [python_checks]
# steps:
# - uses: actions/checkout@v4
# - name: Set up Python
# uses: actions/setup-python@v5
# with:
# python-version: "3.11"
# cache: pip
# cache-dependency-path: py-rgrow/docs/requirements-docs.txt
# - name: Install Python dependencies
# working-directory: py-rgrow/docs
# run: |
# pip install --upgrade pip
# pip install -r requirements-docs.txt
windows:
name: Python Windows builds
needs: [python_checks]
runs-on: windows-latest
strategy:
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"
working-directory: py-rgrow
rust-toolchain: nightly
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: py-rgrow/dist
macos:
name: Python MacOS builds
needs: [python_checks]
runs-on: macos-latest
strategy:
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"
working-directory: py-rgrow
rust-toolchain: nightly
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: py-rgrow/dist
sdist:
needs: [python_checks]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
working-directory: py-rgrow
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: target/wheels
python_release:
name: Python PyPI Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --skip-existing *
rust_release:
name: Rust Crates.io Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: [rust_checks]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Install X components
run: sudo apt-get install -y libxinerama-dev libxcursor-dev libxfixes-dev libxft-dev libpango1.0-dev libpangoxft-1.0-0 libpangocairo-1.0-0
- name: Publish to crates.io
run: cargo publish --allow-dirty -p rgrow
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}