Add support for running function at thread termination #237
Workflow file for this run
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: Verona Runtime CI | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
workflow_dispatch: | |
jobs: | |
build-test: | |
strategy: | |
matrix: | |
# Variant is used to specify alternative jobs by specifying somethig other then | |
# standard | |
variant: [ "Standard" ] | |
# platform: [ "ubuntu-latest", "windows-latest", "mac-latest" ] | |
# Use VS 2019 as currently doesn't compile with latest | |
# Disable mac-latest, not managing to get machines from the pool. | |
platform: [ "ubuntu-latest", "windows-2019" ] | |
build-type: [ "Release", "Debug" ] | |
include: | |
- platform: "ubuntu-latest" | |
cmake-flags: "-G Ninja" | |
dependencies: "sudo apt install ninja-build lldb" | |
- variant: "Sanitizer" | |
platform: "ubuntu-latest" | |
build-type: "Release" | |
cmake-flags: "-G Ninja -DSANITIZER=address,undefined -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang" | |
dependencies: "sudo apt install ninja-build" | |
- platform: "windows-2019" | |
build-type: "Debug" | |
# Exclude perf tests in Debug on Windows as they take too long. | |
ctest-flags: "-E perf" | |
# - platform: "mac-latest" | |
# cmake-flags: "" | |
# dependencies: "" | |
# Don't abort runners if a single one fails | |
fail-fast: false | |
runs-on: ${{matrix.platform}} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: mjp41/workaround8649@c8550b715ccdc17f89c8d5c28d7a48eeff9c94a8 | |
with: | |
os: ${{ matrix.platform }} | |
- name: Install build dependencies | |
run: ${{ matrix.dependencies }} | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build-type}} -DVERONA_CI_BUILD=On ${{matrix.cmake-flags}} | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build-type}} --parallel 4 | |
- name: Test | |
working-directory: ${{github.workspace}}/build/ | |
run: ctest -C ${{matrix.build-type}} -j 4 ${{matrix.ctest-flags}} --output-on-failure --timeout 400 --interactive-debug-mode 0 | |
# Job to run clang-format and report errors | |
format: | |
runs-on: "ubuntu-latest" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install build dependencies | |
run: | | |
sudo apt update | |
sudo apt install clang-format-15 | |
# We don't need to do the build for this job, but we need to configure it to get the clangformat | |
# and copyright targets | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build | |
- name: Run clangformat | |
working-directory: ${{github.workspace}}/build | |
run: | | |
set -eo pipefail | |
make clangformat | |
git diff --exit-code | |
- name: Run copyright | |
working-directory: ${{github.workspace}}/build | |
run: | | |
set -eo pipefail | |
make copyright | |
git diff --exit-code | |
all-checks: | |
needs: [ build-test, format ] | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: Dummy step | |
run: true |