Skip to content

Docker: Add more platforms #4853

Docker: Add more platforms

Docker: Add more platforms #4853

Workflow file for this run

name: Tests
on:
pull_request: ~
push:
branches: [ main ]
# Allow job to be triggered manually.
workflow_dispatch:
# Cancel in-progress jobs when pushing to the same branch.
concurrency:
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref }}
jobs:
tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["ubuntu-latest"]
python-version: ["3.9", "3.10", "3.11", "3.12"]
include:
# arm64 (M1)
- os: "macos-14"
python-version: "3.12"
# x86 (Intel)
- os: "macos-latest"
python-version: "3.12"
- os: "windows-latest"
python-version: "3.12"
env:
OS: ${{ matrix.os }}
PYTHON: ${{ matrix.python-version }}
defaults:
run:
shell: bash
name: Python ${{ matrix.python-version }} on OS ${{ matrix.os }}
steps:
- name: Acquire sources
uses: actions/checkout@v4
# Workaround until pipx is available on M1 machines
# - https://github.com/actions/runner-images/issues/9256
# We install poetry using brew instead of pipx
- name: Install Poetry (Mac M1 only)
if: ${{ startsWith(matrix.os, 'macos-14') }}
run: brew install poetry
- name: Install Poetry
if: ${{ !startsWith(matrix.os, 'macos-14') }}
run: pipx install poetry
- name: Setup Python
if: ${{ !startsWith(matrix.os, 'macos-14') }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
cache: poetry
cache-dependency-path: |
pyproject.toml
poetry.lock
- name: Setup Python (Mac M1 only)
if: ${{ startsWith(matrix.os, 'macos-14') }}
run: |
brew install pyenv
pyenv install ${{ matrix.python-version }}
pyenv global ${{ matrix.python-version }}
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
- name: Install eccodes (Mac only)
if: ${{ startsWith(matrix.os, 'macos-') }}
run: |
brew install eccodes
export WD_ECCODES_DIR=$(brew --prefix eccodes)
- name: Install project
run: .github/workflows/install.sh testing
- name: Install Jupyter kernel
run: poetry run python -m ipykernel install --name "python3" --user
- name: Run tests
run: |
poetry run pytest -vvv --numprocesses=auto -m "not (explorer or cflake)" tests
poetry run pytest -vvv -m cflake tests