1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2026-10-23 09:48:57 +03:00
Files
wsrep-lib/.github/workflows/build.yml
Alexey Yurchenko 14ce8cab76 Apparently github has removed support for Ubuntu 20.04 in workfolws.
Migrate builds done in 20.04 to 22.04 where possible, i.e. where compiler
is supported in 22.04.
2025-04-30 17:45:34 +02:00

166 lines
4.8 KiB
YAML

name: Build
on:
pull_request:
branches:
- master
jobs:
build:
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
# GCC/G++
- os: ubuntu-22.04
CC: gcc
version: "9"
type: Debug
- os: ubuntu-22.04
CC: gcc
version: "9"
type: Release
- os: ubuntu-22.04
CC: gcc
version: "10"
type: Debug
- os: ubuntu-22.04
CC: gcc
version: "10"
type: Release
- os: ubuntu-22.04
CC: gcc
version: "11"
type: Debug
- os: ubuntu-22.04
CC: gcc
version: "11"
type: Release
- os: ubuntu-22.04
CC: gcc
version: "12"
type: Debug
- os: ubuntu-22.04
CC: gcc
version: "12"
type: Release
- os: ubuntu-24.04
CC: gcc
version: "13"
type: Debug
- os: ubuntu-24.04
CC: gcc
version: "13"
type: Release
- os: ubuntu-24.04
CC: gcc
version: "14"
type: Debug
- os: ubuntu-24.04
CC: gcc
version: "14"
type: Release
# Clang
- os: ubuntu-22.04
CC: clang
version: "12"
type: Debug
- os: ubuntu-22.04
CC: clang
version: "12"
type: Release
- os: ubuntu-22.04
CC: clang
version: "13"
type: Debug
- os: ubuntu-22.04
CC: clang
version: "13"
type: Release
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: "recursive"
- name: Update packages
run: sudo apt update
- name: Install compiler
run: |
sudo apt-get install -y ${{ matrix.config.CC }}-${{ matrix.config.version }}
if [ ${{ matrix.config.CC }} == "gcc" ]
then
sudo apt-get install -y g++-${{ matrix.config.version }}
fi
- name: Install build dependencies
run: sudo apt-get install -y libboost-filesystem-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev ccache
# See https://cristianadam.eu/20200113/speeding-up-c-plus-plus-github-actions-using-ccache/
- name: Prepare ccache timestamp
id: ccache_cache_timestamp
shell: cmake -P {0}
run: |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
message("::set-output name=timestamp::${current_date}")
- name: Configure ccache
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ matrix.config.os }}-${{ matrix.config.CC }}-${{ matrix.config.version }}-${{ matrix.config.type }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
restore-keys: ${{ matrix.config.os }}-${{ matrix.config.CC }}-${{ matrix.config.version }}-${{ matrix.config.type }}-ccache-
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
run: |
export CC="ccache ${{ matrix.config.CC }}-${{ matrix.config.version }}"
if [ ${{ matrix.config.CC }} == "gcc" ]
then
export CXX="ccache g++-${{ matrix.config.version }}"
else
export CXX="ccache clang++-${{ matrix.config.version }}"
fi
if [ ${{ matrix.config.CC }} == "gcc" ] && [ ${{ matrix.config.version }} == "4.8" ]
then
STRICT=OFF
DBSIM=OFF
TESTS_EXTRA=OFF
elif [ ${{ matrix.config.CC }} == "gcc" ] && [ ${{ matrix.config.version }} == "5" ]
then
STRICT=ON
DBSIM=ON
TESTS_EXTRA=OFF
else
STRICT=ON
DBSIM=ON
TESTS_EXTRA=ON
fi
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.config.type }} \
-DWSREP_LIB_MAINTAINER_MODE:BOOL=ON \
-DWSREP_LIB_STRICT_BUILD_FLAGS:BOOL=$STRICT \
-DWSREP_LIB_WITH_DBSIM:BOOL=$DBSIM \
-DWSREP_LIB_WITH_ASAN:BOOL=ON \
-DWSREP_LIB_WITH_UNIT_TESTS_EXTRA:BOOL=$TESTS_EXTRA
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
run: |
make -j3 VERBOSE=1
ccache -s
- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
run: ctest -C ${{ matrix.config.type }} --output-on-failure