Skip to content

build

build #286

Workflow file for this run

# NB: this name is used in the status badge
name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
schedule:
- cron: "0 5 * * 6" # 5:00 UTC every Saturday
jobs:
build:
name: Python ${{ matrix.python-version }}, ${{ matrix.vcs }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version:
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "pypy-3.7"
vcs:
- bzr
- git
- hg
- svn
steps:
- name: Install OS-level dependencies
run: sudo apt-get install -y bzr git mercurial subversion
# NB: at some point I'll want to switch from legacy Bazaar (apt package
# bzr) to Breezy (apt package brz). They're both available in
# ubuntu-18.04 and ubuntu20.04.
- name: Git clone
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python-version }}"
- name: Pip cache
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('setup.py') }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.python-version }}-
${{ runner.os }}-pip-
- name: Install Python dependencies
run: |
python -m pip install -U pip
python -m pip install -U setuptools wheel
python -m pip install -U coverage pytest flake8
python -m pip install -e .[test]
- name: Run tests
run: coverage run -m pytest
env:
SKIP_NO_TESTS: "1"
FORCE_TEST_VCS: ${{ matrix.vcs }}
- name: Check test coverage
run: |
coverage report -m --fail-under=${{ matrix.vcs == 'bzr' && 99 || 100 }}
coverage xml
- name: Run check-manifest on itself
run: python check_manifest.py
- name: Report to coveralls
uses: coverallsapp/github-action@v2
with:
file: coverage.xml
lint:
name: ${{ matrix.toxenv }}
runs-on: ubuntu-latest
strategy:
matrix:
toxenv:
- flake8
- mypy
- isort
- check-manifest
- check-python-versions
steps:
- name: Git clone
uses: actions/checkout@v4
- name: Set up Python ${{ env.default_python || '3.12' }}
uses: actions/setup-python@v5
with:
python-version: "${{ env.default_python || '3.12' }}"
- name: Pip cache
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.toxenv }}-${{ hashFiles('tox.ini', 'setup.py') }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.toxenv }}-
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install -U setuptools wheel
python -m pip install -U tox
- name: Run ${{ matrix.toxenv }}
run: python -m tox -e ${{ matrix.toxenv }}