Fix macOS wheel build for datajoint
(Issue #249)
#157
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@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
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@v2 | |
- name: Set up conda env (Linux, Windows) | |
if: ${{ matrix.os != 'macos-latest' }} | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
use-mamba: true | |
miniforge-variant: Mambaforge | |
python-version: ${{ matrix.python-version }} | |
environment-file: ./env_config/env.yml | |
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 }} | |
environment-file: ./env_config/env_macos.yml | |
activate-environment: aeon | |
architecture: arm64 | |
miniconda-version: "latest" | |
- name: Install datajoint wheel build with pip flag (macOS) | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
source $CONDA/bin/activate aeon | |
pip install --use-pep517 datajoint git+https://github.com/datajoint-company/datajoint-utilities.git | |
- name: Update conda env with dev reqs (Linux, Windows, macOS) | |
run: mamba env update -f ./env_config/env_dev.yml | |
# Only run codebase checks and tests for Linux (ubuntu). | |
- name: ruff | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: python -m ruff check --config ./pyproject.toml . | |
- name: pyright | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: python -m pyright --level error --project ./pyproject.toml . | |
- name: pytest | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: python -m pytest tests/ | |
- name: generate test coverage report | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: | | |
python -m pytest --cov=aeon ./tests/ --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 |