Skip to content

CI/Docs updates

CI/Docs updates #725

---
name: Build & Test
on:
pull_request:
push:
jobs:
Linux:
continue-on-error: ${{ matrix.experimental || false }}
name: >-
${{ matrix.image }}
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
matrix:
build_system:
- CMake
compiler:
- GNU
image:
- "debian:11"
- "debian:12"
- "fedora:40"
- "fedora:41"
- "opensuse/leap:15"
- "quay.io/centos/centos:stream9"
- "ubuntu:22.04"
on_default_branch:
- ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }}
include:
- image: "debian:unstable"
build_system: CMake
compiler: GNU
experimental: true
- image: "fedora:rawhide"
build_system: CMake
compiler: GNU
experimental: true
- image: "ubuntu:devel"
build_system: CMake
compiler: GNU
experimental: true
- image: "ubuntu:24.04"
build_system: Autotools
compiler: GNU
- image: "ubuntu:24.04"
build_system: Autotools
compiler: LLVM
- image: "ubuntu:24.04"
build_system: CMake
compiler: GNU
- image: "ubuntu:24.04"
build_system: CMake
compiler: LLVM
exclude:
- on_default_branch: false
fail-fast: false
container:
env:
CC: ${{ matrix.compiler == 'LLVM' && 'clang' || 'gcc' }}
CFLAGS: --coverage
CXX: ${{ matrix.compiler == 'LLVM' && 'clang++' || 'g++' }}
CXXFLAGS: --coverage
image: ${{ matrix.image }}
steps:
- name: Install `git` (openSUSE)
run: zypper --non-interactive install git
if: startsWith(matrix.image, 'opensuse/')
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
if: |
matrix.compiler != 'LLVM' &&
!startsWith(matrix.image, 'opensuse/') &&
!matrix.experimental
- name: Package `mod_tile`
uses: ./.github/actions/cmake/package
if: matrix.build_system == 'CMake'
- name: Install `mod_tile`
uses: ./.github/actions/install
Linux-Latest-Mapnik:
continue-on-error: true
name: >-
${{ matrix.image }}
(Latest Mapnik)
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
matrix:
image:
- "debian:12"
- "ubuntu:24.04"
build_system:
- CMake
compiler:
- GNU
mapnik_latest:
- true
fail-fast: false
container:
env:
CC: ${{ matrix.compiler == 'LLVM' && 'clang' || 'gcc' }}
CFLAGS: --coverage
CXX: ${{ matrix.compiler == 'LLVM' && 'clang++' || 'g++' }}
CXXFLAGS: --coverage
image: ${{ matrix.image }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
- name: Package `mod_tile`
uses: ./.github/actions/cmake/package
if: matrix.build_system == 'CMake'
- name: Install `mod_tile`
uses: ./.github/actions/install
macOS:
env:
CFLAGS: --coverage
CXXFLAGS: --coverage
INSTALL_PREFIX: /usr/local
INSTALL_RUNSTATEDIR: /var/run
LDFLAGS: -undefined dynamic_lookup
name: >-
${{ matrix.os }}
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- macos-13
- macos-14
build_system:
- CMake
compiler:
- LLVM
on_default_branch:
- ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }}
include:
- os: macos-15
build_system: CMake
compiler: LLVM
exclude:
- on_default_branch: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Set CPATH, ICU_ROOT & LIBRARY_PATH
run: |
echo "CPATH=$(brew --prefix)/include" >> ${GITHUB_ENV}
echo "ICU_ROOT=$(brew --prefix icu4c)" >> ${GITHUB_ENV}
echo "LIBRARY_PATH=$(brew --prefix)/lib" >> ${GITHUB_ENV}
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
genhtml-extra-options: --keep-going --ignore-errors count,inconsistent,range
lcov-extra-options: --keep-going --ignore-errors count,inconsistent,range
if: matrix.os != 'macos-12'
- name: Package `mod_tile`
uses: ./.github/actions/cmake/package
if: matrix.build_system == 'CMake'
- name: Install `mod_tile`
uses: ./.github/actions/install
FreeBSD:
env:
CFLAGS: --coverage
CTEST_CLIENT_HOST: ::1
CTEST_SERVER_HOST: localhost
CXXFLAGS: --coverage
INSTALL_PREFIX: /usr/local
LIBRARY_PATH: /usr/local/lib
TMPDIR: /tmp
name: >-
${{ matrix.box_freebsd }}
(${{ matrix.build_system }})
(${{ matrix.compiler }})
runs-on: ubuntu-latest
strategy:
matrix:
box_freebsd:
- FreeBSD-13.4-STABLE
build_system:
- CMake
compiler:
- LLVM
on_default_branch:
- ${{ contains(github.ref, 'master') || contains(github.ref, 'develop') || contains(github.ref, 'CI') }}
include:
- box_freebsd: FreeBSD-14.1-STABLE
build_system: CMake
compiler: LLVM
exclude:
- on_default_branch: false
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set `BUILD_PARALLEL_LEVEL` & `TEST_PARALLEL_LEVEL`
run: |
echo "BUILD_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV}
echo "TEST_PARALLEL_LEVEL=$(nproc)" >> ${GITHUB_ENV}
- name: Provision VM
uses: hummeltech/freebsd-vagrant-action@v3
with:
box: freebsd/${{ matrix.box_freebsd }}
cpus: ${{ env.BUILD_PARALLEL_LEVEL }}
memory: 4096
# Mapnik is not in the `quarterly` repository (2023.10.12)
- name: Use "latest" repository
run: |
sudo mkdir -p /usr/local/etc/pkg/repos
sed 's#/quarterly#/latest#g' /etc/pkg/FreeBSD.conf | sudo tee /usr/local/etc/pkg/repos/FreeBSD.conf
sudo pkg upgrade
- name: Install dependencies
uses: ./.github/actions/dependencies/install
- name: Build `mod_tile`
uses: ./.github/actions/build
- name: Test `mod_tile`
uses: ./.github/actions/test
- name: Process & Report `mod_tile` coverage results
uses: ./.github/actions/coverage
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
- name: Package `mod_tile`
uses: ./.github/actions/cmake/package
- name: Install `mod_tile`
uses: ./.github/actions/install