mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 11:55:51 +00:00
107 lines
3.2 KiB
YAML
107 lines
3.2 KiB
YAML
name: Run tests with sanitizers
|
|
on:
|
|
schedule:
|
|
- cron: "0 4 * * 1-5"
|
|
workflow_dispatch:
|
|
pull_request:
|
|
paths:
|
|
- '.github/workflows/sanitizers.yml'
|
|
|
|
jobs:
|
|
build:
|
|
name: Build clio tests
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- sanitizer: tsan
|
|
compiler: gcc
|
|
- sanitizer: asan
|
|
compiler: gcc
|
|
# - sanitizer: ubsan # todo: enable when heavy runners are available
|
|
# compiler: gcc
|
|
uses: ./.github/workflows/build_impl.yml
|
|
with:
|
|
runs_on: ubuntu-latest # todo: change to heavy
|
|
container: '{ "image": "rippleci/clio_ci:latest" }'
|
|
disable_cache: true
|
|
conan_profile: ${{ matrix.compiler }}.${{ matrix.sanitizer }}
|
|
build_type: Release
|
|
code_coverage: false
|
|
static: false
|
|
unit_tests: true
|
|
integration_tests: false
|
|
clio_server: false
|
|
target: clio_tests
|
|
sanitizer: ${{ matrix.sanitizer }}
|
|
|
|
# consider combining this with the previous matrix instead
|
|
run_tests:
|
|
needs: build
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- sanitizer: tsan
|
|
compiler: gcc
|
|
- sanitizer: asan
|
|
compiler: gcc
|
|
# - sanitizer: ubsan # todo: enable when heavy runners are available
|
|
# compiler: gcc
|
|
runs-on: ubuntu-latest # todo: change to heavy
|
|
container:
|
|
image: rippleci/clio_ci:latest
|
|
permissions:
|
|
contents: write
|
|
issues: write
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: clio_tests_${{ runner.os }}_Release_${{ matrix.compiler }}.${{ matrix.sanitizer }}
|
|
|
|
- name: Run clio_tests [${{ matrix.compiler }} / ${{ matrix.sanitizer }}]
|
|
shell: bash
|
|
run: |
|
|
chmod +x ./clio_tests
|
|
./.github/scripts/execute-tests-under-sanitizer ./clio_tests
|
|
|
|
- name: Check for sanitizer report
|
|
shell: bash
|
|
id: check_report
|
|
run: |
|
|
if ls .sanitizer-report/* 1> /dev/null 2>&1; then
|
|
echo "found_report=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "found_report=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Upload report
|
|
if: ${{ steps.check_report.outputs.found_report == 'true' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.compiler }}_${{ matrix.sanitizer }}_report
|
|
path: .sanitizer-report/*
|
|
include-hidden-files: true
|
|
|
|
#
|
|
# todo: enable when we have fixed all currently existing issues from sanitizers
|
|
#
|
|
# - name: Create an issue
|
|
# if: ${{ steps.check_report.outputs.found_report == 'true' }}
|
|
# uses: ./.github/actions/create_issue
|
|
# env:
|
|
# GH_TOKEN: ${{ github.token }}
|
|
# with:
|
|
# labels: 'bug'
|
|
# title: '[${{ matrix.sanitizer }}/${{ matrix.compiler }}] reported issues'
|
|
# body: >
|
|
# Clio tests failed one or more sanitizer checks when built with ${{ matrix.compiler }}`.
|
|
|
|
# Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/
|
|
# Reports are available as artifacts.
|