Use Pyproject2Conda to manage build envs #771
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 | |
- windows | |
- ubuntu | |
steps: | |
- uses: actions/checkout@v2 | |
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}}-${{matrix.blas}} | |
check-docs: | |
name: Docs, Examples, and Eval | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: 👢 Set up Conda environment | |
uses: mamba-org/setup-micromamba@v1 | |
id: setup | |
with: | |
environment-file: envs/lenskit-py3.10-demo.yaml | |
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: | | |
lkbuild fetch-data -d ml-100k | |
lkbuild fetch-data -d ml-1m | |
lkbuild fetch-data -d ml-10m | |
lkbuild fetch-data -d ml-20m | |
- name: Install for testing | |
run: | | |
flit install --deps none -s | |
- 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 | |
- ubuntu | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v2 | |
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 'flit>=3.8' | |
flit install --deps=production --extras=test --only-deps | |
- 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@v2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v1 | |
with: | |
python-version: '3.10' | |
architecture: x64 | |
- name: Set up Python deps | |
run: | | |
set -e | |
python -m pip install -U pip wheel | |
python -m pip install -c min-constraints.txt .[test] | |
python -m pip install pytest-cov | |
- 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@v2 | |
with: | |
fetch-depth: 0 | |
- uses: lenskit/lkbuild/actions/report-test-results@main |