74 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 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
 | 
