linkchecker/.github/workflows/build.yml
Chris Mayo f489660925 Test with minimum versions of requirements
Pick 1.8.1 as the minimum version of argcomplete. This is the version in
the current Debian oldstable and Ubuntu 20.04 LTS.
2022-11-30 19:21:06 +00:00

155 lines
4.1 KiB
YAML

# NB: this name is used in the status badge, where we want to see "build: passing"
name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch: # allow manual triggering from GitHub UI
schedule:
- cron: "0 5 * * 6" # 5:00 UTC every Saturday
jobs:
build:
name: Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
toxenv: [py]
include:
- python-version: "3.7"
toxenv: minreqs
steps:
- name: Install OS dependencies
run: |
sudo apt update
sudo apt install -y clamav-daemon geoip-database libgeoip-dev gettext
- name: Download the ClamAV signature database
run: |
sudo service clamav-freshclam stop
sudo freshclam
sudo service clamav-daemon restart
sudo service clamav-daemon status
- name: Git clone
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: "${{ matrix.python-version }}"
- name: Pip cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('tox.ini', 'pyproject.toml') }}
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 hatchling hatch-vcs polib
python -m pip install -U tox coveralls
- name: Wait for ClamAV to be ready
run: |
while ! test -S /var/run/clamav/clamd.ctl; do printf "."; sleep 1; done
- name: Run tests
run: |
python -m hatchling build -t sdist --hooks-only
python -m tox -e ${{ matrix.toxenv }}
- name: Report to coveralls
run: coveralls
env:
COVERALLS_SERVICE_NAME: github
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
docs:
# there's some overlap with publish-pages.yml, but this one runs on pull
# requests, doesn't publish, and runs more doc checks
name: docs
runs-on: ubuntu-latest
steps:
- name: Git clone
uses: actions/checkout@v3
- name: Install Ubuntu packages
run: |
sudo apt install -y graphviz mandoc
- name: Set up Python
uses: actions/setup-python@v4
- name: Pip cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-docs-${{ hashFiles('tox.ini') }}
restore-keys: |
${{ runner.os }}-pip-docs-
${{ runner.os }}-pip-
- name: Install Python packages
run: |
pip install -U -r requirements.txt hatchling hatch-vcs Sphinx \
sphinx-epytext sphinx-intl sphinx-rtd-theme sphinx-sitemap
- name: Build
run: |
python3 -m hatchling build -t sdist --hooks-only
make -C doc html
make -C doc locale
make -C doc man
make -C doc check
lint:
name: ${{ matrix.toxenv }}
runs-on: ubuntu-latest
strategy:
matrix:
toxenv:
- flake8
- yamllint
steps:
- name: Git clone
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
- name: Pip cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.toxenv }}-${{ hashFiles('tox.ini') }}
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 hatchling hatch-vcs polib
python -m pip install -U tox
- name: Run ${{ matrix.toxenv }}
run: python -m tox -e ${{ matrix.toxenv }}