diff --git a/.github/workflows/build-sanitize.yml b/.github/workflows/build-sanitize.yml index e242abcfd..9654cb4e4 100644 --- a/.github/workflows/build-sanitize.yml +++ b/.github/workflows/build-sanitize.yml @@ -15,6 +15,12 @@ on: '**/*.cpp' ] + pull_request: + types: [opened, synchronize, reopened] + paths: [ + '.github/workflows/build-sanitize.yml' + ] + concurrency: group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} cancel-in-progress: true @@ -28,19 +34,35 @@ env: jobs: ctest: - runs-on: [self-hosted, X64, CPU, Linux] - continue-on-error: true strategy: matrix: - sanitizer: [ADDRESS, THREAD, UNDEFINED] + include: + - sanitizer: ADDRESS + machine: [self-hosted, X64, Linux] + # thread doesn't run properly on some self hosted machines, so run it on Github instead + - sanitizer: THREAD + machine: ubuntu-24.04 + - sanitizer: UNDEFINED + machine: [self-hosted, X64, Linux] + + runs-on: ${{ matrix.machine }} steps: - name: Clone id: checkout uses: actions/checkout@v6 + - name: ccache + uses: ggml-org/ccache-action@v1.2.21 + if: ${{ matrix.sanitizer == 'THREAD' }} + with: + key: ctest-thread-ubuntu-24.04 + variant: ccache + evict-old-files: 1d + save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + # with UNDEFINED sanitizer, we have to build in Debug to avoid GCC 13 false-positive warnings - name: Build (undefined) id: cmake_build_undefined