Skip to content

CI

CI #658

Workflow file for this run

name: CI
on:
push:
pull_request:
schedule:
# Weekly Monday 6AM build
# * is a special character in YAML so you have to quote this string
- cron: '0 6 * * 1'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
initial_check:
name: Mandatory checks before CI
runs-on: ubuntu-latest
steps:
- name: Check base branch
uses: actions/github-script@v7
if: github.event_name == 'pull_request'
with:
script: |
const allowed_basebranch = 'master';
const pr = context.payload.pull_request;
if (pr.base.ref !== allowed_basebranch) {
core.setFailed(`PR opened against ${pr.base.ref}, not ${allowed_basebranch}`);
} else {
core.info(`PR opened correctly against ${allowed_basebranch}`);
}
# The rest only run if above are done
tests:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
needs: initial_check
strategy:
fail-fast: true
matrix:
include:
- name: Code style checks
os: ubuntu-latest
python: 3.x
toxenv: codestyle
- name: PEP 517 build
os: ubuntu-latest
python: 3.x
toxenv: twine
- name: Security audit
os: ubuntu-latest
python: 3.x
toxenv: bandit
- name: Link check
os: ubuntu-latest
python: 3.x
toxenv: linkcheck
- name: Test without optional deps
os: ubuntu-latest
python: '3.10'
toxenv: py310-test
- name: Coverage test with remote data
os: ubuntu-latest
python: '3.11'
toxenv: py311-test-alldeps-cov
toxposargs: --remote-data
- name: Test with dev dependencies
os: ubuntu-latest
python: '3.13-dev'
toxenv: py313-test-devdeps
- name: Test with old dependencies
os: ubuntu-20.04
python: '3.10'
toxenv: py310-test-oldestdeps
- name: Test in OSX
os: macos-latest
python: '3.12'
toxenv: py312-test-alldeps
# NOTE: If TRDS cannot take the hit, disable --remote-data
- name: Test in Windows with remote data
os: windows-latest
python: '3.11'
toxenv: py311-test-alldeps
toxposargs: --remote-data
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip tox
- name: Run tests
run: tox -e ${{ matrix.toxenv }} -- ${{ matrix.toxposargs }}
- name: Upload coverage to codecov
if: ${{ contains(matrix.toxenv,'-cov') }}
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml