Clear all CI checks on all platforms #185
Workflow file for this run
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
# Builds the aeon environment; lints formatting and smells via ruff; checks type annotations via pyright; | |
# tests via pytest; reports test coverage via pytest-cov and codecov. | |
name: build_env_run_tests | |
on: | |
pull_request: | |
branches: [main] | |
types: [opened, reopened, synchronize] | |
workflow_dispatch: # allows running manually from Github's 'Actions' tab | |
jobs: | |
build_env_pip_pyproject: # checks only for building env using pip and pyproject.toml | |
name: Build env using pip and pyproject.toml on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
if: github.event.pull_request.draft == false | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: [3.11] | |
fail-fast: false | |
defaults: | |
run: | |
shell: ${{ matrix.os == 'windows-latest' && 'cmd' || 'bash' }} -l {0} # Adjust shell based on OS | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Create venv and install dependencies | |
run: | | |
python -m venv .venv | |
.venv/Scripts/activate || source .venv/bin/activate | |
pip install -e .[dev] | |
pip list | |
python -c "import aeon" | |
build_env_run_tests: # checks for building env using mamba and runs codebase checks and tests | |
name: Build env and run tests on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
if: github.event.pull_request.draft == false | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: [3.11] | |
fail-fast: false | |
defaults: | |
run: | |
shell: ${{ matrix.os == 'windows-latest' && 'cmd' || 'bash' }} -l {0} | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Set up conda env (Linux, Windows) | |
if: ${{ matrix.os != 'macos-latest' }} | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
use-mamba: true | |
miniforge-variant: Mambaforge | |
python-version: ${{ matrix.python-version }} | |
activate-environment: aeon | |
- name: Set up conda env (macOS) | |
if: ${{ matrix.os == 'macos-latest' }} | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
use-mamba: true | |
miniforge-variant: Mambaforge | |
python-version: ${{ matrix.python-version }} | |
activate-environment: aeon | |
architecture: arm64 | |
miniconda-version: "latest" | |
- name: Install datajoint wheel build with pip flag (macOS) | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: pip install --use-pep517 datajoint git+https://github.com/datajoint-company/datajoint-utilities.git | |
- name: Install pyproject.toml dependencies | |
run: pip install -e .[dev] | |
# Run codebase checks and tests | |
- name: ruff | |
run: python -m ruff check . | |
- name: pyright | |
run: python -m pyright --level error --project ./pyproject.toml . | |
- name: pytest | |
run: python -m pytest tests/ --ignore=tests/dj_pipeline | |
- name: generate test coverage report | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: | | |
python -m pytest --cov=aeon tests/ --ignore=tests/dj_pipeline --cov-report=xml:tests/test_coverage/test_coverage_report.xml | |
- name: upload test coverage report to codecov | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
uses: codecov/codecov-action@v2 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
directory: tests/test_coverage/ | |
files: test_coverage_report.xml | |
fail_ci_if_error: true | |
verbose: true |