Skip to content

GHA: Update runner images for UnitTest workflow #76

GHA: Update runner images for UnitTest workflow

GHA: Update runner images for UnitTest workflow #76

Workflow file for this run

# Copyright (C) 2005 - 2021 Settlers Freaks <sf-team at siedler25.org>
#
# SPDX-License-Identifier: GPL-2.0-or-later
name: Unit tests
on:
push:
pull_request:
concurrency:
group: ${{format('tests-{0}:{1}', github.repository, github.ref)}}
cancel-in-progress: true
env:
BOOST_VERSION: 1.69.0
defaults:
run:
shell: bash
jobs:
StyleAndFormatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: git submodule update --init
- name: Validation
run: tools/ci/staticValidation.sh "$GITHUB_WORKSPACE"
- name: Formatting
uses: DoozyX/[email protected]
with:
source: "examples include src tests"
clangFormatVersion: 10
- name: Lint markdown files
uses: avto-dev/[email protected]
with:
args: .
- name: Check licensing
run:
pip install --user reuse
reuse lint
UnitTests:
strategy:
matrix:
include:
- { compiler: gcc-7, os: ubuntu-20.04, buildType: Release }
- { compiler: gcc-7, os: ubuntu-20.04, buildType: Debug, coverage: true }
- { compiler: clang, os: macos-13, buildType: Debug, boostVersion: 1.74.0 } # Multiple bugs with recent OSX until 1.74
# Latest GCC
- { compiler: gcc-13, os: ubuntu-22.04, buildType: Debug }
# Latest Clang
- { compiler: clang-12, os: ubuntu-22.04, buildType: Debug }
# Windows
- { compiler: msvc, os: windows-2019, buildType: Debug }
runs-on: ${{matrix.os}}
steps:
- run: |
echo "DEPS_DIR=${{runner.temp}}/.cache" >> $GITHUB_ENV
echo "LIBUTIL_DIR=$GITHUB_WORKSPACE/external/libutil" >> $GITHUB_ENV
echo "LIBENDIAN_DIR=$GITHUB_WORKSPACE/external/libendian" >> $GITHUB_ENV
- run: echo "BOOST_VERSION=${{matrix.boostVersion}}" >> $GITHUB_ENV
if: matrix.boostVersion
- uses: actions/checkout@v4
- uses: actions/checkout@v4
name: Checkout libutil
with:
repository: Return-To-The-Roots/libutil
ref: master
path: external/libutil
- uses: actions/checkout@v4
name: Checkout libendian
with:
repository: Return-To-The-Roots/libendian
ref: master
path: external/libendian
- name: Cache dependencies
if: "!startsWith(runner.os, 'Windows')"
uses: actions/cache@v2
with:
path: ${{env.DEPS_DIR}}
key: ${{matrix.os}}-${{matrix.compiler}}-${{env.BOOST_VERSION}}
- name: Install Compiler
if: "startsWith(runner.os, 'Linux')"
run: |
pkgs=${{matrix.compiler}}
pkgs=${pkgs/gcc-/g++-}
sudo apt install $pkgs
- name: Setup compiler
if: "!startsWith(runner.os, 'Windows')"
run: tools/ci/setupCompiler.sh
env:
COMPILER: ${{matrix.compiler}}
- name: Install system packages (Linux)
if: "startsWith(runner.os, 'Linux')"
run: sudo apt install ccache libminiupnpc-dev lcov
- name: Install system packages (OSX)
if: startsWith(runner.os, 'macOS')
run: brew install ccache cmake miniupnpc
- name: Install system packages (Windows)
if: startsWith(runner.os, 'Windows')
run: choco install wget
- name: Setup cmake
if: "!startsWith(runner.os, 'Windows')"
uses: jwlawson/[email protected]
with:
cmake-version: '3.9.x'
- name: Setup CCache
if: "!startsWith(runner.os, 'Windows')"
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{matrix.os}}-${{matrix.compiler}}-${{matrix.buildType}}-${{matrix.boostVersion}}
max-size: 200M
- name: Install Boost
shell: bash
run: |
BOOST_ROOT="${DEPS_DIR}/boost${BOOST_VERSION}"
echo "BOOST_ROOT=${BOOST_ROOT}" >> $GITHUB_ENV
echo "ADDITIONAL_CMAKE_FLAGS=${ADDITIONAL_CMAKE_FLAGS} -DBoost_NO_SYSTEM_PATHS=ON -DBoost_NO_BOOST_CMAKE=ON" >> $GITHUB_ENV
SHARED=""
if [[ "${{runner.os}}" == macOS ]]; then SHARED="shared"; fi # Seems to be required
$LIBUTIL_DIR/tools/ci/installBoost.sh "${BOOST_VERSION}" "${BOOST_ROOT}" "filesystem,system,program_options,thread,test,locale,iostreams,regex" $SHARED
- name: Enable coverage collection
if: matrix.coverage
run: echo "ADDITIONAL_CMAKE_FLAGS=${ADDITIONAL_CMAKE_FLAGS} -DRTTR_ENABLE_COVERAGE=ON" >> $GITHUB_ENV
- name: Build
run: tools/ci/build.sh "${{matrix.buildType}}" "${ADDITIONAL_CMAKE_FLAGS}"
- name: Upload coverage
if: matrix.coverage && success()
run: $LIBUTIL_DIR/tools/ci/uploadCoverageData.sh '*/examples/*' "${DEPS_DIR}/"'*' '*/build/*'
- name: Upload coverage (Coveralls)
if: matrix.coverage && success()
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: coverage.info