Skip to content

another try.

another try. #574

Workflow file for this run

name: Continuous Integration
# Run this workflow every time a new commit pushed to your repository
on: [push, pull_request]
env:
DEPS_DIR: ${{ github.workspace}}/deps
HUNTER_ROOT: ${{ github.workspace}}/hunter
defaults:
run:
shell: bash
jobs:
# clang-format:
# name: clang-format-18
# runs-on: ubuntu-24.04
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Install clang-format
# run: |
# wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
# sudo apt-add-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-18 main" &&
# sudo apt-get install clang-format-18
# - name: clang-format
# run: './ci/run-clang-format.py -r --clang-format-executable clang-format-18 --color always ./lib/ ./projects/ ./examples/'
# clang-tidy:
# name: clang-tidy-17 ${{ matrix.name }}
# needs: clang-format
# runs-on: ubuntu-24.04
# container: craffael/feen-ci:clang17
# strategy:
# matrix:
# include:
# - name: without projects
# paths: "'^((?!snippets|/test/|/test_utils/|/projects/).)*$'"
# - name: only projects
# paths: "'^.*projects/((?!snippets|/test/|/test_utils/).)*$'"
# env:
# COMPILER: 'clang++-17'
# BUILD_TYPE: 'Debug'
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Install clang-tidy
# run: apt update && apt install -y clang-tidy-17 python-is-python3
# - name: Restore cache
# uses: actions/cache/restore@v3
# with:
# path: '${{ env.DEPS_DIR }} ${{ env.HUNTER_ROOT }}'
# key: ${{ runner.os }}-${{ env.COMPILER }}-${{ env.BUILD_TYPE }}-${{ github.run_id }}
# restore-keys: |
# ${{ runner.os }}-${{ env.COMPILER }}-${{ env.BUILD_TYPE }}-
# ${{ runner.os }}-${{ env.COMPILER }}-
# - name: build_dependencies
# run: './ci/build_dependencies.sh'
# - name: Save Cache
# uses: actions/cache/save@v4
# if: always()
# with:
# path: |
# ${{ env.DEPS_DIR }}
# ${{ env.HUNTER_ROOT }}
# key: ${{ runner.os }}-${{ env.COMPILER }}-${{ env.BUILD_TYPE }}-${{ github.run_id }}
# - name: clang-tidy
# run: './ci/run_clang_tidy.sh ${{ matrix.paths}}'
# compilation on linux/osx:
compile_test:
name: ${{ matrix.os }} - ${{ matrix.compiler }} - ${{ matrix.build_type }}
# needs: clang-format
strategy:
matrix:
include:
- os: ubuntu-20.04
container: craffael/feen-ci:clang17
compiler: 'clang++-17'
packages: 'cmake'
build_type: 'Debug'
cxx_flags: '-g0 -Werror=#warnings'
- os: ubuntu-20.04
container: craffael/feen-ci:clang17
compiler: 'clang++-17'
packages: 'cmake'
build_type: 'Release'
cxx_flags: '-g0 -Werror=#warnings'
- os: ubuntu-20.04
container: craffael/feen-ci:gcc13
compiler: 'g++-13'
packages: 'cmake'
build_type: 'Debug'
cxx_flags: '-g0 -Werror=cpp'
- os: ubuntu-20.04
container: craffael/feen-ci:gcc13
compiler: 'g++-13'
packages: 'cmake'
build_type: 'Release'
cxx_flags: '-g0 -Werror=cpp'
- os: macos-14
compiler: 'clang++'
build_type: 'Debug'
cxx_flags: '-g0 -Werror=#warnings'
- os: macos-15
compiler: 'clang++'
build_type: 'Release'
cxx_flags: '-g0 -Werror=#warnings'
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
env:
COMPILER: ${{ matrix.compiler }}
BUILD_TYPE: ${{ matrix.build_type }}
CXXFLAGS: ${{ matrix.cxx_flags }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install packages
if: (runner.os == 'Linux') && (matrix.packages != '')
run: apt-get install ${{ matrix.packages }}
- name: Restore cache
uses: actions/cache@v4
with:
path: |
${{ env.DEPS_DIR }}
${{ env.HUNTER_ROOT }}
key: ${{ runner.os }}-${{ env.COMPILER }}-${{ env.BUILD_TYPE }}-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-${{ env.COMPILER }}-${{ env.BUILD_TYPE }}-
${{ runner.os }}-${{ env.COMPILER }}-
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3
# with:
# limit-access-to-actor: false
- name: build_dependencies
run: './ci/build_dependencies.sh'
- name: compile and test
run: './ci/compile_test.sh'
# windows:
# name: Windows x64 - ${{ matrix.build_type }}
# needs: clang-format
# runs-on: windows-latest
# defaults:
# run:
# shell: pwsh
# env:
# HUNTER_ROOT: C:\.hunter
# strategy:
# matrix:
# include:
# - build_type: 'Debug'
# compiler: 'msvc'
# # - build_type: "Release"
# # compiler: "msvc"
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Restore cache
# uses: actions/cache/restore@v4
# with:
# path: '${{ env.HUNTER_ROOT }}'
# key: ${{ runner.os }}-msvc-${{ matrix.build_type }}-${{ github.run_id }}
# restore-keys: |
# ${{ runner.os }}-msvc-${{ matrix.build_type }}-
# ${{ runner.os }}-msvc-
# # Note that windows has a recent version of cmake installed -> we don't need to install it here.
# # we set CMAKE_CXX_FLAGS_DEBUG explictly to avoid the creation of pdb files (which fill up disk space)
# - name: Hunter dependencies
# run: |
# mkdir build > $null
# cd build
# cmake -A x64 -D HUNTER_CONFIGURATION_TYPES=${{ matrix.build_type }} -D CMAKE_CXX_FLAGS_DEBUG="/MDd /Ob0 /Od /RTC1" ..
# - name: Save Cache
# uses: actions/cache/save@v4
# if: always()
# with:
# path: |
# ${{ env.HUNTER_ROOT }}
# key: ${{ runner.os }}-msvc-${{ matrix.build_type }}-${{ github.run_id }}
# - name: compile
# run: |
# cmake --build ./build --config ${{ matrix.build_type }} --target ALL_BUILD -j2
# - name: test
# run: |
# cd build
# ctest -j 2 -c ${{ matrix.build_type }} --output-on-failure
# doxygen:
# name: doxygen
# runs-on: ubuntu-22.04
# needs: [clang-format]
# env:
# CXX: 'clang++-17'
# BUILD_TYPE: 'Debug'
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Restore cache
# uses: actions/cache@v4
# with:
# path: |
# ${{ env.DEPS_DIR }}
# ${{ env.HUNTER_ROOT }}
# key: ${{ runner.os }}-clang++-17-Doxygen-${{ github.run_id }}
# restore-keys: |
# ${{ runner.os }}-clang++-17-Doxygen-
# ${{ runner.os }}-clang++-17-Debug-
# - name: Setup cmake
# uses: jwlawson/actions-setup-cmake@v2
# with:
# cmake-version: '3.30'
# - name: install clang17
# run: |
# wget https://apt.llvm.org/llvm.sh
# chmod u+x llvm.sh
# sudo ./llvm.sh 17
# - name: install unbuffer
# run: |
# sudo apt-add-repository universe
# sudo apt-get update
# sudo apt-get install expect
# - name: install doxygen
# run: |
# wget https://github.com/doxygen/doxygen/releases/download/Release_1_13_2/doxygen-1.13.2.linux.bin.tar.gz
# gunzip doxygen-1.13.2.linux.bin.tar.gz
# tar -xvf doxygen-1.13.2.linux.bin.tar
# cd doxygen-1.13.2
# sudo make install
# cd ..
# - name: build doxygen
# run: |
# cmake -H. -BBuild -DLF_DOX_INCLUDE_PROJECTS=On -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
# cd Build
# make doxygen
# cd doc/doxygen/html
# mkdir with_projects
# shopt -s extglob
# mv !(with_projects) with_projects
# cd ../../..
# cmake -DLF_DOX_INCLUDE_PROJECTS=OFF .
# unbuffer make doxygen 2>&1 | tee output
# echo "Doxygen output:"
# cat output
# echo "Doxygen output end"
# if grep -q "warning:" "output"; then
# echo -e "\033[0;31mDoxygen produced warnings:\033[0m"
# grep "warning:" "output"
# exit 1
# fi
# - name: deploy
# uses: JamesIves/github-pages-deploy-action@v4
# # Only deploy documentation on master branch.
# if: github.ref == 'refs/heads/master'
# with:
# token: ${{ secrets.GITHUB_TOKEN }}
# branch: gh-pages
# folder: './Build/doc/doxygen/html'
# clean: true