Expand build matrix for Apple Silicon & MacOS vanilla Python builds #41
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
name: Test Suite | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
defaults: | |
run: | |
shell: bash -el {0} | |
concurrency: | |
group: test-${{github.ref}} | |
cancel-in-progress: true | |
jobs: | |
conda: | |
name: Conda Python ${{matrix.python}} on ${{matrix.platform}} | |
runs-on: ${{matrix.platform}}-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
platform: | |
- macos-latest | |
- macos-14 | |
- windows-latest | |
- ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: 👢 Set up Conda environment | |
uses: mamba-org/setup-micromamba@v1 | |
id: setup | |
with: | |
environment-file: envs/lenskit-py${{matrix.python}}-ci.yaml | |
environment-name: lkpy | |
cache-environment: true | |
init-shell: bash | |
- name: Inspect environment | |
run: | | |
python -V | |
numba -s | |
- name: Test LKPY | |
run: | | |
python -m pytest --cov=lenskit --verbose --log-file=test.log | |
env: | |
NUMBA_NUM_THREADS: 4 | |
MKL_THREADING_LAYER: sequential | |
OMP_NUM_THREADS: 1 | |
OPENBLAS_NUM_THREADS: 1 | |
- name: Non-JIT test coverage | |
if: runner.os == 'Linux' | |
env: | |
NUMBA_DISABLE_JIT: 1 | |
run: | | |
python -m pytest --cov=lenskit --cov-append -m 'not slow' --log-file=test-nojit.log | |
- name: Process test results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-conda-${{matrix.platform}}-py${{matrix.python}} | |
check-docs: | |
name: Docs, Examples, and Eval | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Create Conda environment file | |
run: | | |
pipx run pyproject2conda yaml -p 3.10 -e test -e demo -e dev -o environment.yml | |
- name: 👢 Set up Conda environment | |
uses: mamba-org/setup-micromamba@v1 | |
id: setup | |
with: | |
environment-file: environment.yml | |
environment-name: lkpy | |
cache-environment: true | |
init-shell: bash | |
- name: Inspect Conda environment | |
run: | | |
echo "Conda environment info" | |
conda info | |
echo "Conda environment package list" | |
conda list | |
- name: Cache ML data | |
uses: actions/cache@v2 | |
with: | |
path: | | |
data | |
!data/*.zip | |
key: test-mldata-000 | |
- name: Download ML data | |
run: | | |
python -m lenskit.datasets.fetch ml-100k | |
python -m lenskit.datasets.fetch ml-1m | |
python -m lenskit.datasets.fetch ml-10m | |
python -m lenskit.datasets.fetch ml-20m | |
- name: Install for testing | |
run: | | |
pip install --no-deps -e . | |
- name: Run Eval Tests | |
run: | | |
python -m pytest --cov=lenskit -m eval --log-file test-eval.log | |
python -m pytest --cov=lenskit --cov-append -m realdata --log-file test-realdata.log | |
- name: Validate doc notebooks | |
run: | | |
cp docs/*.ipynb data | |
python -m pytest --nbval-lax --cov=lenskit --cov-append data --log-file test-docs.log | |
# - name: Validate Examples | |
# run: | | |
# python -m pytest --nbval-lax --cov=lenskit --cov-append examples --log-file test-examples.log | |
- name: Process test results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-check-docs | |
vanilla: | |
name: Vanilla Python ${{matrix.python}} on ${{matrix.platform}} | |
runs-on: ${{matrix.platform}}-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
platform: | |
- windows-latest | |
- ubuntu-latest | |
- macos-latest | |
- macos-14 | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{matrix.python}} | |
cache: 'pip' | |
- name: Set up dependencies | |
run: | | |
pip install -e '.[test]' | |
- name: Inspect environment | |
run: | | |
pip list | |
- name: Run tests | |
run: | | |
python -m pytest --cov=lenskit --cov-report=xml --log-file=test.log | |
- name: Process test results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-vanilla-${{matrix.platform}}-py${{matrix.python}} | |
mindep: | |
name: Minimal Supported Dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Set up Python deps | |
run: | | |
set -e | |
python -m pip install -U 'uv>=0.1.13' | |
uv pip install --system --resolution=lowest-direct -e '.[test]' | |
- name: Inspect environment | |
run: | | |
pip list | |
- name: Run tests | |
run: | | |
python -m pytest --cov=lenskit --cov-report=xml --log-file test.log | |
- name: Process Test Results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-mindeps | |
results: | |
name: Test Suite Results | |
runs-on: ubuntu-latest | |
needs: | |
- conda | |
- vanilla | |
- check-docs | |
- mindep | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: lenskit/lkbuild/actions/report-test-results@main |