CI/Docs updates (#470) #726
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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 |