clean up manylinux build, sdc rust linting #144
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: Setup virtual environment | |
run: | | |
uv venv venv | |
source venv/bin/activate | |
uv pip install -U pip setuptools wheel | |
- name: Install mypy | |
run: | | |
source venv/bin/activate | |
uv pip install --upgrade mypy | |
- name: Run mypy | |
run: | | |
source venv/bin/activate | |
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: 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: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --find-interpreter | |
sccache: "true" | |
manylinux: "auto" | |
working-directory: py-rgrow | |
- 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 }} |