1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
name: Check Documentation
# This file is part of the pgRouting project.
# Copyright (c) 2020-2026 pgRouting developers
# License: GPL-2 See https://github.com/pgRouting/pgrouting/blob/main/LICENSE
# This action runs:
# - When this file changes
# - When changes on documentation (doc)
# - When changes on translation (locale)
# - When the way the documentation build changes (CMakeLists.txt, doc/CMakeLists.txt, doc/conf.py.in)
#
# documentation is tested only on:
# - ubuntu-latest
# - default postgres installed on ubuntu-latest
#
# Currently more than 50% translated
# - es
on:
workflow_dispatch:
push:
paths:
- '.github/workflows/doc-check.yml'
- 'doc/**'
- 'locale/**'
- 'CMakeLists.txt'
branches-ignore:
- 'gh-pages'
pull_request:
paths:
- '.github/workflows/doc-check.yml'
- 'doc/**'
- 'locale/**'
- 'CMakeLists.txt'
branches-ignore:
- 'gh-pages'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
build:
name: documentation
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [en, es, zh_Hans, sv]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 2
- name: check modified files
id: check_files
run: |
# always processing english, no matter what the change was
if [[ "${{ matrix.language }}" == "en" ]]; then echo "PROCESS=true" >> $GITHUB_ENV; exit 0; fi
# when this file changes all languages are tested
if git diff --name-only HEAD^ HEAD | grep -q '.github/workflows/doc-check.yml' ; then echo "PROCESS=true" >> $GITHUB_ENV; exit 0; fi
# when there is a change on the way the build is done all languages are tested
if git diff --name-only HEAD^ HEAD | grep -q '^CMakeLists.txt' ; then echo "PROCESS=true" >> $GITHUB_ENV; exit 0; fi
if git diff --name-only HEAD^ HEAD | grep -q '^doc/CMakeLists.txt' ; then echo "PROCESS=true" >> $GITHUB_ENV; exit 0; fi
if git diff --name-only HEAD^ HEAD | grep -q '^doc/conf.py.in' ; then echo "PROCESS=true" >> $GITHUB_ENV; exit 0; fi
# if there is a change on the translation
if git diff --name-only HEAD^ HEAD | grep -q "^locale/${{ matrix.language }}" ; then echo "PROCESS=true" >> $GITHUB_ENV; echo "CHK_LINK=true" >> $GITHUB_ENV; exit 0; fi
- name: Get postgres version
if: env.PROCESS == 'true'
run: |
sudo service postgresql start
pgver=$(psql --version | grep -Po '(?<=psql \(PostgreSQL\) )[^;]+(?=\.\d+ \()')
echo "PGVER=${pgver}" >> $GITHUB_ENV
- name: Add PostgreSQL APT repository
if: env.PROCESS == 'true'
run: |
sudo apt-get install curl ca-certificates gnupg
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ \
$(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
- name: Install python
if: env.PROCESS == 'true'
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Install dependencies
if: env.PROCESS == 'true'
run: |
sudo apt-get update
sudo apt-get install -y \
libboost-graph-dev \
python3-sphinx \
python3-sphinx-bootstrap-theme \
postgresql-${PGVER} \
postgresql-server-dev-${PGVER} \
graphviz
- name: Configure
if: env.PROCESS == 'true'
run: |
export PATH=/usr/lib/postgresql/${PGVER}/bin:$PATH
mkdir build
cd build
cmake -DBUILD_LINKCHECK=ON \
-DSPHINX_FLAGS='-W -v -j auto --keep-going' \
-DPOSTGRESQL_VERSION=${PGVER} ..
- name: Check Documentation
if: env.PROCESS == 'true'
run: |
cd build
make html-${{ matrix.language }}
- name: Check Links
if: env.CHK_LINK == 'true'
run: |
cd build
make linkcheck-${{ matrix.language }}
|