Added AddressSanitizer [ASan] CI pipeline #3
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: OCV PR Linux 24 ASan | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| paths: | |
| - '.github/workflows/OCV-PR-LINUX-24-ASan.yaml' | |
| workflow_call: | |
| inputs: | |
| workflow_branch: | |
| description: "Branch for ci-gha-workflow repository" | |
| default: "main" | |
| required: false | |
| type: string | |
| concurrency: | |
| group: OCV-PR-Linux-24-ASan-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| branch_eval: | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| branches: ${{ steps.determine-branches.outputs.branches }} | |
| steps: | |
| - id: determine-branches | |
| shell: bash | |
| run: | | |
| if [ "${{ github.event.repository.name == 'ci-gha-workflow' }}" = "true" ] ; then | |
| echo "branches=[ '4.x', '5.x' ]" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "branches=[ '${{ github.base_ref }}' ]" >> "$GITHUB_OUTPUT" | |
| fi | |
| Ubuntu-24-ASan: | |
| runs-on: opencv-cn-lin-x86-64 | |
| timeout-minutes: 180 | |
| needs: | |
| - branch_eval | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| branch: ${{ fromJSON(needs.branch_eval.outputs.branches )}} | |
| defaults: | |
| run: | |
| shell: bash | |
| container: | |
| image: 'quay.io/opencv-ci/opencv-ubuntu-24.04:20251127' | |
| volumes: | |
| - /home/opencv-cn/git_cache:/opt/git_cache | |
| - /home/opencv-cn/ci_cache/opencv/24.04:/opt/.ccache | |
| - /home/opencv-cn/binaries_cache/24.04:/opt/binaries_cache | |
| - /home/opencv-cn/dnn-models:/opt/dnn-models | |
| env: | |
| ANT_HOME: '/usr/share/ant' | |
| DNN_MODELS: '/opt/dnn-models' | |
| CCACHE_DIR: '/opt/.ccache' | |
| CCACHE_MAXSIZE: '8G' | |
| OPENCV_DOWNLOAD_PATH: '/opt/binaries_cache' | |
| # Focused CMAKE_OPT for Ubuntu 24.04 with ASan enabled by default | |
| CMAKE_OPT: >- | |
| -DBUILD_DOCS=ON | |
| -DBUILD_EXAMPLES=ON | |
| -DOPENCV_ENABLE_NONFREE=ON | |
| -DWITH_IMGCODEC_GIF=ON | |
| -DWITH_JPEGXL=ON | |
| -DWITH_AVIF=ON | |
| -DWITH_GPHOTO2=ON | |
| -DWITH_ARAVIS=ON | |
| -DCPU_BASELINE=AVX2 | |
| -DCMAKE_BUILD_TYPE=RelWithDebInfo | |
| -DENABLE_OMIT_FRAME_POINTER=OFF | |
| -DCMAKE_C_FLAGS="-fno-omit-frame-pointer -fsanitize=address" | |
| -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -fsanitize=address" | |
| -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address" | |
| -DCMAKE_SHARED_LINKER_FLAGS="-fsanitize=address" | |
| HOME: '/home/ubuntu' | |
| MAIN_BUILD_DIR: "${{ (github.event.repository.name != 'opencv_contrib') && 'build' || 'build-contrib' }}" | |
| OPENCV_FOR_THREADS_NUM: 8 | |
| CMAKE_BUILD_PARALLEL_LEVEL: 8 | |
| steps: | |
| - name: Checkout workflow repository | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: opencv/ci-gha-workflow | |
| ref: "${{ github.repository == 'opencv/ci-gha-workflow' && github.ref || inputs.workflow_branch }}" | |
| - name: Checkout and merge OpenCV | |
| uses: ./checkout-and-merge | |
| with: | |
| target_branch: "${{ matrix.branch }}" | |
| author: "${{ github.event.pull_request.user.login }}" | |
| source_branch: "${{ github.event.repository.name == 'ci-gha-workflow' && '' || github.head_ref }}" | |
| gitcache: '/opt/git_cache' | |
| home: '${{ env.HOME }}' | |
| workdir: '${{ env.HOME }}' | |
| - name: Update extra dnn models | |
| timeout-minutes: 60 | |
| working-directory: '${{ env.HOME }}' | |
| run: | | |
| ls -lR ${{ env.DNN_MODELS }} | |
| python3 opencv_extra/testdata/dnn/download_models.py \ | |
| --cleanup \ | |
| --dst '${{ env.DNN_MODELS }}/dnn' | |
| echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV | |
| - if: ${{ github.event.repository.name != 'opencv_contrib' }} | |
| name: Configure and build OpenCV | |
| uses: ./configure-and-build | |
| with: | |
| workdir: '${{ env.HOME }}' | |
| builddir: 'build' | |
| generator: 'Ninja' | |
| options: '${{ env.CMAKE_OPT }}' | |
| - name: Configure and build OpenCV with contrib | |
| uses: ./configure-and-build | |
| with: | |
| workdir: '${{ env.HOME }}' | |
| builddir: 'build-contrib' | |
| generator: 'Ninja' | |
| options: '-DOPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules ${{ env.CMAKE_OPT }}' | |
| - name: Run OpenCV tests | |
| uses: ./run-tests | |
| timeout-minutes: 100 | |
| env: | |
| OPENCV_TEST_DATA_PATH: '${{ env.HOME }}/opencv_extra/testdata' | |
| OPENCV_TEST_REQUIRE_DATA: 1 | |
| OPENCV_TEST_CHECK_OPTIONAL_DATA: 1 | |
| PYTHONPATH: '${{ env.HOME }}/${{ env.MAIN_BUILD_DIR }}/python_loader:$PYTHONPATH' | |
| ASAN_OPTIONS: 'detect_leaks=1:exitcode=1:abort_on_error=1:halt_on_error=1' | |
| with: | |
| workdir: '${{ env.HOME }}' | |
| builddir: '${{ env.MAIN_BUILD_DIR }}' | |
| logdir: '${{ env.HOME }}/${{ env.MAIN_BUILD_DIR }}' | |
| plan: "test-plan-${{ matrix.branch }}.json" | |
| suite: "[ ${{ (github.event.repository.name == 'opencv_contrib') && '''linux-contrib''' || '''linux''' }} ]" | |
| filter: "[ 'ubuntu-common', 'ubuntu-avx2' ]" | |
| enable_python: "true" | |
| enable_java: "true" | |
| suffix: '24.04_asan_${{ matrix.branch }}' | |
| - if: ${{ always() && env.WARNINGS == '1' }} | |
| name: Warnings check | |
| run: | | |
| echo "::error Warnings have been found!" | |
| exit 1 |