Skip to content

CI

CI #580

Workflow file for this run

name: CI
on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
workflow_dispatch:
inputs:
tmate:
type: boolean
description: 'Start tmate session on failure'
required: false
default: false
jobs:
tests:
strategy:
fail-fast: false
matrix:
include:
- runs-on: ubuntu-latest
python: '3.8'
arch: x64
- runs-on: ubuntu-latest
python: '3.9'
arch: x64
- runs-on: ubuntu-latest
python: '3.10'
arch: x64
- runs-on: ubuntu-latest
python: '3.11'
arch: x64
run-praat-tests: true
name-extra: ' (with Praat tests)'
- runs-on: ubuntu-latest
python: '3.12'
arch: x64
run-praat-tests: true
name-extra: ' (with Praat tests)'
- runs-on: ubuntu-latest
python: 'pypy-3.8'
arch: x64
- runs-on: ubuntu-latest
python: 'pypy-3.9'
arch: x64
run-praat-tests: true
name-extra: ' (with Praat tests)'
- runs-on: ubuntu-latest
python: 'pypy-3.10-nightly'
arch: x64
run-praat-tests: true
name-extra: ' (with Praat tests)'
- runs-on: ubuntu-latest
python: '3.11'
arch: x64
gcc: 10
name-extra: ' (GCC 10)'
- runs-on: ubuntu-latest
python: '3.11'
arch: x64
clang: 12
name-extra: ' (Clang 12)'
- runs-on: ubuntu-latest
python: '3.11'
arch: x64
release: true
name-extra: ' (Release)'
- runs-on: macos-latest
python: '3.8'
arch: x64
- runs-on: macos-latest
python: '3.11'
arch: x64
run-praat-tests: true
name-extra: ' (with Praat tests)'
- runs-on: macos-latest
python: '3.12'
arch: x64
- runs-on: macos-latest
python: '3.11'
arch: x64
release: true
name-extra: ' (Release)'
- runs-on: macos-latest
python: 'pypy-3.10-nightly'
arch: x64
- runs-on: windows-latest
python: '3.8'
arch: x64
- runs-on: windows-latest
python: '3.11'
arch: x64
run-praat-tests: true
name-extra: ' (with Praat tests)'
- runs-on: windows-latest
python: '3.12'
arch: x64
- runs-on: windows-latest
python: '3.8'
arch: x86
name-extra: ' (32-bit)'
- runs-on: windows-latest
python: '3.11'
arch: x86
name-extra: ' (32-bit)'
- runs-on: windows-latest
python: '3.11'
arch: x64
release: true
name-extra: ' (Release)'
- runs-on: windows-latest
python: 'pypy-3.10-nightly'
arch: x64
name: Python ${{ matrix.python }}${{ matrix.name-extra }} • ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
if: startsWith(github.ref_name, 'docs') != true
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
architecture: ${{ matrix.arch }}
allow-prereleases: true
- name: Setup CMake
uses: jwlawson/[email protected]
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-${{ matrix.runs-on }}-${{ matrix.arch }}-${{ matrix.release }}-${{ matrix.gcc }}-${{ matrix.clang }}
- name: Install OpenBLAS on macOS for NumPy
if: runner.os == 'macOS' && startsWith(matrix.python, 'pypy')
run: |
brew install openblas
echo "OPENBLAS=$(brew --prefix openblas)" >> $GITHUB_ENV
- name: Install requirements
run: |
python -m pip install --upgrade pip
pip install --upgrade setuptools wheel
pip install --upgrade -r tests/requirements.txt
- name: Select GCC
if: matrix.gcc
shell: bash
run: |
echo "CC=gcc-${{ matrix.gcc }}" >> $GITHUB_ENV
echo "CXX=g++-${{ matrix.gcc }}" >> $GITHUB_ENV
- name: Select Clang
if: matrix.clang
shell: bash
run: |
echo "CC=clang-${{ matrix.clang }}" >> $GITHUB_ENV
echo "CXX=clang++-${{ matrix.clang }}" >> $GITHUB_ENV
- name: Setup pytest annotations
run: |
pip install pytest-github-actions-annotate-failures
- name: Setup GCC annotations
uses: ammaraskar/gcc-problem-matcher@master
- name: Setup MSVC annotations
uses: ammaraskar/msvc-problem-matcher@master
- name: Configure
shell: bash
run: |
CMAKE_ARCH="${{ (runner.os == 'Windows' && matrix.arch == 'x86') && '-A Win32' || '' }}"
CMAKE_BUILD_TYPE="${{ matrix.release && 'Release' || 'Debug' }}"
CCACHE_BASEDIR="$GITHUB_WORKSPACE"
cmake -S . -B build $CMAKE_ARCH -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DPython_EXECUTABLE="$(which python)" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
- name: Compile
run: |
cmake --build build -j 2
- name: Select Praat tests to run
if: matrix.run-praat-tests
shell: bash
run: |
echo "PYTEST_ADDOPTS=--run-praat-tests -v" >> $GITHUB_ENV
- name: Run tests
run: |
cmake --build build --target tests
- name: Setup tmate session
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tmate && failure() }}
uses: mxschmitt/action-tmate@v3
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Setup CMake
uses: jwlawson/[email protected]
- name: Setup ccache
uses: hendrikmuhs/[email protected]
with:
key: ${{ github.job }}-ubuntu-latest-x64
- name: Install requirements
run: |
pip install -r docs/requirements.txt
sudo apt install pandoc
- name: Configure
shell: bash
run: |
cmake -S . -B build -DPython_EXECUTABLE="$(which python)" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
- name: Build
run: |
cmake --build build -j 2
- name: Build documentation
run: |
cmake --build build --target docs
- name: Check links
run: |
cmake --build build --target docs_linkcheck
- name: Setup tmate session
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tmate && failure() }}
uses: mxschmitt/action-tmate@v3