Skip to content

CI

CI #3679

Workflow file for this run

name: CI
defaults:
run:
shell: bash # To override PowerShell on Windows
on:
# Trigger the workflow on push or pull request,
# but only for the master branch
push:
branches:
- master
pull_request:
# don't trigger for draft PRs
types: [ opened, synchronize, reopened, ready_for_review ]
# Trigger workflow once per week
schedule:
- cron: '0 0 * * *'
# Trigger the workflow on manual dispatch
workflow_dispatch:
inputs:
tmate_enabled:
type: boolean
description: 'Enable tmate debugging?'
required: false
default: false
jobs:
build:
if: github.event.pull_request.draft == false
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest ]
python-version: [ '3.8', '3.9', '3.10', '3.11']
pydantic-version: [ '1.10.15', '2.7.1' ]
include: # Run windows tests on only one python version
- os: windows-latest
python-version: '3.10' # torch 1.x not available on Windows or MacOS for Python 3.11
pydantic-version: '1.10.15'
- os: windows-latest
python-version: '3.10' # torch 1.x not available on Windows or MacOS for Python 3.11
pydantic-version: '2.7.1'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install --upgrade --upgrade-strategy eager -r requirements/dev.txt
python -m pip install --upgrade pydantic==${{matrix.pydantic-version}}
python -m pip install --upgrade --upgrade-strategy eager .[prophet,tensorflow,torch]
if [ "$RUNNER_OS" == "Linux" ]; then # Currently, we only support KeOps on Linux.
python -m pip install --upgrade --upgrade-strategy eager .[prophet,tensorflow,torch,keops]
fi
python -m pip freeze
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tmate_enabled }}
with:
limit-access-to-actor: true
- name: Test with pytest
run: |
pytest --randomly-seed=0 alibi_detect
# Note: The pytest-randomly seed is fixed at 0 for now. Once the legacy np.random.seed(0)'s
# are removed from tests, this can be removed, allowing all tests to use random seeds.
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
directory: .
env_vars: ${{matrix.os}}, ${{matrix.python-version}}
fail_ci_if_error: false
verbose: true
- name: Build Python package
run: |
make build_pypi
code-quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade --upgrade-strategy eager -r requirements/dev.txt
python -m pip install --upgrade --upgrade-strategy eager .[all]
- name: Lint with flake8
run: |
flake8 alibi_detect
- name: Typecheck with mypy
run: |
mypy alibi_detect
docs:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
container:
image: readthedocs/build:ubuntu-22.04-2022.03.15
options: --user root
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements/docs.txt
python -m pip freeze
- name: Build documentation to html
run: |
make build_docs
- name: Build documentation to pdf via latex
run: |
make build_latex
licenses:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Check 3rd party licenses haven't changed
run: |
pip install "tox>=3.21.0,<4.0.0"
make licenses
make check_licenses
optional_dependencies:
runs-on: ubuntu-latest
strategy:
matrix:
env: [ 'default', 'tensorflow', 'torch', 'prophet', 'keops', 'all' ]
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Check optional dependency imports are protected
run: |
pip install "tox>=3.21.0,<4.0.0"
tox -e ${{matrix.env}}