Add GitHub workflow for Google Code Sanitizers (#4006)
This commit is contained in:
parent
0d1fdbd1bd
commit
b0224ecda1
2 changed files with 77 additions and 2 deletions
74
.github/workflows/code_sanitizers.yml
vendored
Normal file
74
.github/workflows/code_sanitizers.yml
vendored
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
name: Code Sanitizers
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
env:
|
||||
RELEASE: 0
|
||||
artifact: 0
|
||||
|
||||
jobs:
|
||||
google_sanitizers_linux:
|
||||
name: ${{ matrix.SANITIZER }} / ROCKSDB=${{ matrix.TEST_USE_ROCKSDB }} / ${{ matrix.COMPILER }}
|
||||
timeout-minutes: 90
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
TEST_USE_ROCKSDB: [0, 1]
|
||||
COMPILER: [clang]
|
||||
SANITIZER: [ASAN, ASAN_INT, TSAN]
|
||||
runs-on: ubuntu-20.04
|
||||
outputs:
|
||||
issue_reported: ${{ steps.show_report.outputs.issue_reported }}
|
||||
env:
|
||||
COMPILER: ${{ matrix.COMPILER }}
|
||||
TEST_USE_ROCKSDB: ${{ matrix.TEST_USE_ROCKSDB }}
|
||||
XSAN: ${{ endsWith(matrix.sanitizer, 'ASAN_INT') && 'ASAN' || matrix.SANITIZER }}
|
||||
XSAN_SUPPRESSIONS: ${{ endsWith(matrix.SANITIZER, 'TSAN') && 'suppressions=../tsan_suppressions:' || '' }}
|
||||
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
|
||||
steps:
|
||||
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 #v3.1.0
|
||||
with:
|
||||
submodules: "true"
|
||||
- name: Git Submodule Update
|
||||
run: git submodule update --init --recursive
|
||||
- name: XSan variable values
|
||||
run: |
|
||||
(
|
||||
echo "XSAN: '${XSAN}'"
|
||||
echo "XSAN_SUPPRESSIONS: '${XSAN_SUPPRESSIONS}'"
|
||||
)
|
||||
- name: Install Dependencies
|
||||
run: ci/actions/linux/install_deps.sh
|
||||
- name: Build Tests
|
||||
id: build_tests
|
||||
run: docker run -e TEST_USE_ROCKSDB -v ${PWD}:/workspace nanocurrency/nano-env:${{ matrix.COMPILER }} /bin/bash -c \
|
||||
"cd /workspace && ${{ matrix.SANITIZER }}=1 ./ci/build-ci.sh /usr/lib/x86_64-linux-gnu/cmake/Qt5 'core_test rpc_test'"
|
||||
- name: Run core_test
|
||||
id: core_test
|
||||
continue-on-error: true
|
||||
run: docker run -v ${PWD}:/workspace nanocurrency/nano-env:${{ matrix.COMPILER }} /bin/bash -c \
|
||||
"cd /workspace/build && ${XSAN}_OPTIONS=${XSAN_SUPPRESSIONS}log_exe_name=1:log_path=sanitizer_report ./core_test"
|
||||
- name: Run rpc_test
|
||||
id: rpc_test
|
||||
continue-on-error: true
|
||||
run: docker run -v ${PWD}:/workspace nanocurrency/nano-env:${{ matrix.COMPILER }} /bin/bash -c \
|
||||
"cd /workspace/build && ${XSAN}_OPTIONS=${XSAN_SUPPRESSIONS}log_exe_name=1:log_path=sanitizer_report ./rpc_test"
|
||||
- name: Test Reports
|
||||
id: show_report
|
||||
run: |
|
||||
(
|
||||
issue_reported=false
|
||||
reports=$(ls build/sanitizer_report*)
|
||||
if [[ -n "${reports}" ]]; then
|
||||
echo "Report Output:"
|
||||
for report in ${reports}; do
|
||||
echo "File: $report"
|
||||
docker run -v ${PWD}:/workspace nanocurrency/nano-env:${{ matrix.COMPILER }} /bin/bash -c "cat /workspace/${report}"
|
||||
echo
|
||||
done
|
||||
issue_reported=true
|
||||
else
|
||||
echo "No report has been generated."
|
||||
fi
|
||||
echo "issue_reported=${issue_reported}" >> $GITHUB_OUTPUT
|
||||
) || exit 0
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
qt_dir=${1}
|
||||
build_target=${2:-all}
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
|
@ -61,10 +62,10 @@ if [[ "$OS" == 'Linux' ]]; then
|
|||
if [[ ${LCOV:-0} == 1 ]]; then
|
||||
cmake --build ${PWD} --target generate_coverage -- -j2
|
||||
else
|
||||
cmake --build ${PWD} --target all -k -- -j2
|
||||
cmake --build ${PWD} --target ${build_target} -k -- -j2
|
||||
fi
|
||||
else
|
||||
sudo cmake --build ${PWD} --target all -- -j2
|
||||
sudo cmake --build ${PWD} --target ${build_target} -- -j2
|
||||
fi
|
||||
|
||||
popd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue