mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
64 lines
2.2 KiB
YAML
64 lines
2.2 KiB
YAML
name: Sanitizers
|
|
|
|
on: [pull_request, push]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
SCCACHE_WEBDAV_ENDPOINT: "https://frcmaven.wpi.edu/artifactory/wpilib-generic-cache-cmake-local"
|
|
SCCACHE_WEBDAV_KEY_PREFIX: "sccache"
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: asan
|
|
cmake-flags: "-DCMAKE_BUILD_TYPE=Asan"
|
|
ctest-env: ""
|
|
ctest-flags: ""
|
|
- name: tsan
|
|
cmake-flags: "-DCMAKE_BUILD_TYPE=Tsan"
|
|
ctest-env: "TSAN_OPTIONS=second_deadlock_stack=1:suppressions=$GITHUB_WORKSPACE/tsan_suppressions.txt"
|
|
ctest-flags: "-E 'cscore|cameraserver'"
|
|
- name: ubsan
|
|
cmake-flags: "-DCMAKE_BUILD_TYPE=Ubsan"
|
|
ctest-env: ""
|
|
ctest-flags: ""
|
|
name: "${{ matrix.name }}"
|
|
runs-on: ubuntu-24.04
|
|
container: wpilib/roborio-cross-ubuntu:2025-24.04
|
|
steps:
|
|
- name: Install Dependencies
|
|
run: sudo apt-get update && sudo apt-get install -y libopencv-dev libopencv-java clang-18 ninja-build avahi-daemon
|
|
|
|
- name: Install sccache
|
|
uses: mozilla-actions/sccache-action@v0.0.10
|
|
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: configure
|
|
run: mkdir build && cd build && cmake -G Ninja -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang-18 -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++-18 -DWITH_JAVA=OFF ${{ matrix.cmake-flags }} ..
|
|
env:
|
|
SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
|
|
SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
|
|
|
- name: Setup avahi-daemon
|
|
run: |
|
|
sudo service dbus start
|
|
sudo avahi-daemon -D
|
|
|
|
- name: build
|
|
working-directory: build
|
|
run: cmake --build . --parallel $(nproc)
|
|
env:
|
|
SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
|
|
SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
|
|
|
- name: test
|
|
working-directory: build
|
|
run: ${{ matrix.ctest-env }} ctest --output-on-failure ${{ matrix.ctest-flags }}
|