linkchecker/.github/workflows/build.yml
Chris Mayo dec76d60ff Run tests on ubuntu-latest
The VirusCheck plugin is now disabled. Revert:
2d30942f2 ("Run tests on ubuntu-22.04", 2024-10-12)
2025-07-23 19:23:52 +01:00

177 lines
4.6 KiB
YAML

# NB: this name is used in the status badge, where we want to see "build: passing"
name: build
permissions:
contents: read
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.10"
- "3.11"
- "3.12"
- "3.13"
- "3.14"
toxenv: [py]
include:
- python-version: "3.9"
toxenv: minreqs
services:
httpbin:
image: kennethreitz/httpbin
ports:
- 8080:80
steps:
- name: Install OS dependencies
run: |
sudo apt-get update
sudo apt-get install -y geoip-database libgeoip-dev gettext
- name: Git clone
uses: actions/checkout@v4
with:
show-progress: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python-version }}"
allow-prereleases: true
- name: Pip cache
uses: actions/cache@v4
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
# coverage is required by coverallsapp/github-action
run: |
python -m pip install -U pip
python -m pip install -U hatchling hatch-vcs polib
python -m pip install -U tox coverage
- name: Run tests
run: |
python -m hatchling build -t sdist --hooks-only
python -m tox -e ${{ matrix.toxenv }}-geoip
- name: Report to coveralls
uses: coverallsapp/github-action@f350da2c033043742f89e8c0b7b5145a1616da6d # v2.1.2
with:
parallel: true
flag-name: run-${{ matrix.python-version }}
finish:
needs: build
runs-on: ubuntu-latest
steps:
- name: Close coveralls parallel build
uses: coverallsapp/github-action@f350da2c033043742f89e8c0b7b5145a1616da6d # v2.1.2
with:
parallel-finished: true
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@v4
with:
show-progress: false
- name: Install Ubuntu packages
run: |
sudo apt-get install -y graphviz mandoc
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Pip cache
uses: actions/cache@v4
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 dnspython beautifulsoup4 requests \
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
- check-python-versions
- pylint
- yamllint
steps:
- name: Git clone
uses: actions/checkout@v4
with:
show-progress: false
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Pip cache
uses: actions/cache@v4
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 }}