Clang-tidy static analysis (Ubuntu 24.04, Python 3.12, Clang-18, Clang-tidy-18) #20472
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: Clang-tidy static analysis (Ubuntu 24.04, Python 3.12, Clang-18, Clang-tidy-18) | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| types: | |
| - opened | |
| - synchronize | |
| - reopened | |
| - ready_for_review | |
| merge_group: | |
| push: | |
| branches: | |
| - master | |
| - 'releases/**' | |
| concurrency: | |
| # github.ref is not unique in post-commit | |
| group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-clang-tidy | |
| cancel-in-progress: true | |
| permissions: read-all | |
| env: | |
| RISCV_TOOLCHAIN_ROOT: /opt/riscv | |
| jobs: | |
| Smart_CI: | |
| runs-on: ubuntu-latest | |
| if: github.event.pull_request.draft == false || github.run_attempt > 1 | |
| outputs: | |
| affected_components: "${{ steps.smart_ci.outputs.affected_components }}" | |
| changed_components: "${{ steps.smart_ci.outputs.changed_components }}" | |
| skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}" | |
| steps: | |
| - name: checkout action | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| timeout-minutes: 15 | |
| with: | |
| sparse-checkout: .github/actions/smart-ci | |
| - name: Get affected components | |
| id: smart_ci | |
| uses: ./.github/actions/smart-ci | |
| with: | |
| repository: ${{ github.repository }} | |
| pr: ${{ github.event.number }} | |
| commit_sha: ${{ github.sha }} | |
| ref_name: ${{ github.ref_name }} | |
| component_pattern: "category: (.*)" | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| skip_when_only_listed_labels_set: 'docs' | |
| skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*/layer_tests_summary/*,*/conformance/*' | |
| - name: Show affected components | |
| run: | | |
| echo "${{ toJSON(steps.smart_ci.outputs.affected_components) }}" | |
| shell: bash | |
| Docker: | |
| needs: Smart_CI | |
| runs-on: aks-linux-4-cores-16gb-docker-build | |
| container: | |
| image: openvinogithubactions.azurecr.io/docker_build:0.2 | |
| volumes: | |
| - /mount:/mount | |
| outputs: | |
| images: "${{ steps.handle_docker.outputs.images }}" | |
| steps: | |
| - name: Set mock output images if pipeline should be skipped | |
| if: ${{ needs.smart_ci.outputs.skip_workflow == 'True' }} | |
| id: mock_image | |
| run: echo "images={\"ov_build\":{\"ubuntu_24_04_x64\":\"mock\", \"ubuntu_22_04_arm64\":\"mock\", \"ubuntu_22_04_riscv_xuantie\":\"mock\"}}" >> "$GITHUB_OUTPUT" | |
| - name: Checkout | |
| if: ${{ needs.smart_ci.outputs.skip_workflow != 'True' }} | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| timeout-minutes: 15 | |
| - uses: ./.github/actions/handle_docker | |
| if: ${{ needs.smart_ci.outputs.skip_workflow != 'True' }} | |
| id: handle_docker | |
| with: | |
| images: | | |
| ov_build/ubuntu_24_04_x64 | |
| ov_build/ubuntu_22_04_riscv_xuantie | |
| registry: 'openvinogithubactions.azurecr.io' | |
| dockerfiles_root_dir: '.github/dockerfiles' | |
| changed_components: ${{ needs.smart_ci.outputs.changed_components }} | |
| Docker_Arm: | |
| needs: Smart_CI | |
| runs-on: aks-linux-4-cores-8gb-arm-docker-build | |
| container: | |
| image: openvinogithubactions.azurecr.io/docker_build:0.2 | |
| volumes: | |
| - /mount:/mount | |
| outputs: | |
| images: "${{ steps.handle_docker.outputs.images }}" | |
| steps: | |
| - name: Set mock output images if pipeline should be skipped | |
| if: ${{ needs.smart_ci.outputs.skip_workflow == 'True' }} | |
| id: mock_image | |
| run: echo "images={\"ov_build\":{\"ubuntu_22_04_arm64\":\"mock\"}}" >> "$GITHUB_OUTPUT" | |
| - name: Checkout | |
| if: ${{ needs.smart_ci.outputs.skip_workflow != 'True' }} | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| timeout-minutes: 15 | |
| - uses: ./.github/actions/handle_docker | |
| if: ${{ needs.smart_ci.outputs.skip_workflow != 'True' }} | |
| id: handle_docker | |
| with: | |
| images: | | |
| ov_build/ubuntu_22_04_arm64 | |
| registry: 'openvinogithubactions.azurecr.io' | |
| dockerfiles_root_dir: '.github/dockerfiles' | |
| changed_components: ${{ needs.smart_ci.outputs.changed_components }} | |
| Build: | |
| needs: [Docker, Smart_CI] | |
| if: fromJSON(needs.smart_ci.outputs.affected_components).CPU && !needs.smart_ci.outputs.skip_workflow | |
| timeout-minutes: 150 | |
| defaults: | |
| run: | |
| shell: bash | |
| runs-on: aks-linux-16-cores-32gb | |
| container: | |
| image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_24_04_x64 }} | |
| volumes: | |
| - /mount:/mount | |
| - /home/runner/secrets/:/secrets:ro | |
| options: -e SCCACHE_AZURE_BLOB_CONTAINER | |
| env: | |
| DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
| CMAKE_BUILD_TYPE: 'Release' | |
| CMAKE_GENERATOR: 'Ninja Multi-Config' | |
| CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
| CMAKE_C_COMPILER_LAUNCHER: sccache | |
| CMAKE_COMPILE_WARNING_AS_ERROR: 'ON' | |
| SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
| SCCACHE_SERVER_PORT: 35555 | |
| SCCACHE_ERROR_LOG: /__w/openvino/sccache_log.txt | |
| SCCACHE_LOG: warn | |
| GITHUB_WORKSPACE: '/__w/openvino/openvino' | |
| OPENVINO_REPO: /__w/openvino/openvino/openvino | |
| BUILD_DIR: /__w/openvino/openvino/openvino_build | |
| SCCACHE_AZURE_KEY_PREFIX: ubuntu24_x86_64_Release_itt_faster_build_clang_tidy | |
| steps: | |
| - name: Append the environment variable - load SCCACHE_AZURE_CONNECTION_STRING from file | |
| shell: bash | |
| run: | | |
| SCCACHE_AZURE_CONNECTION_STRING="$(cat /secrets/sccache/connection-string)" | |
| echo "::add-mask::${SCCACHE_AZURE_CONNECTION_STRING}" | |
| echo "SCCACHE_AZURE_CONNECTION_STRING=${SCCACHE_AZURE_CONNECTION_STRING}" >> $GITHUB_ENV | |
| echo "✓ Connection string loaded and masked" | |
| - name: Clone OpenVINO | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| timeout-minutes: 15 | |
| with: | |
| path: ${{ env.OPENVINO_REPO }} | |
| submodules: 'true' | |
| - name: CMake configure | |
| run: | | |
| cmake \ | |
| -G "${{ env.CMAKE_GENERATOR }}" \ | |
| -DENABLE_CLANG_TIDY=ON \ | |
| -DENABLE_PROFILING_ITT=FULL \ | |
| -DENABLE_DEBUG_CAPS=ON \ | |
| -DSELECTIVE_BUILD=COLLECT \ | |
| -DENABLE_PYTHON=OFF \ | |
| -DENABLE_TESTS=OFF \ | |
| -DENABLE_NCC_STYLE=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ | |
| -S ${OPENVINO_REPO} \ | |
| -B ${BUILD_DIR} | |
| - name: Cmake build with clang-tidy enabled | |
| run: | | |
| cmake \ | |
| --build ${BUILD_DIR} \ | |
| --parallel $(($(nproc) - 1)) \ | |
| --config ${{ env.CMAKE_BUILD_TYPE }} \ | |
| --target openvino_intel_cpu_plugin \ | |
| -- --quiet -k 0 | |
| - name: Show sccache stats | |
| run: ${SCCACHE_PATH} --show-stats | |
| Build-aarch64: | |
| needs: [Docker_Arm, Smart_CI] | |
| if: fromJSON(needs.smart_ci.outputs.affected_components).CPU && !needs.smart_ci.outputs.skip_workflow | |
| timeout-minutes: 150 | |
| defaults: | |
| run: | |
| shell: bash | |
| runs-on: aks-linux-16-cores-32gb-arm | |
| container: | |
| image: ${{ fromJSON(needs.docker_arm.outputs.images).ov_build.ubuntu_22_04_arm64 }} | |
| volumes: | |
| - /mount:/mount | |
| - /home/runner/secrets/:/secrets:ro | |
| options: -e SCCACHE_AZURE_BLOB_CONTAINER | |
| env: | |
| DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
| CMAKE_BUILD_TYPE: 'Release' | |
| CMAKE_GENERATOR: 'Unix Makefiles' | |
| CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
| CMAKE_C_COMPILER_LAUNCHER: sccache | |
| CMAKE_COMPILE_WARNING_AS_ERROR: 'ON' | |
| SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
| SCCACHE_SERVER_PORT: 35555 | |
| SCCACHE_ERROR_LOG: /__w/openvino/sccache_log.txt | |
| SCCACHE_LOG: warn | |
| GITHUB_WORKSPACE: '/__w/openvino/openvino' | |
| OPENVINO_REPO: /__w/openvino/openvino/openvino | |
| BUILD_DIR: /__w/openvino/openvino/openvino_build | |
| SCCACHE_AZURE_KEY_PREFIX: ubuntu24_x86_64_Release_itt_faster_build_clang_tidy_aarch64 | |
| steps: | |
| - name: Append the environment variable - load SCCACHE_AZURE_CONNECTION_STRING from file | |
| shell: bash | |
| run: | | |
| SCCACHE_AZURE_CONNECTION_STRING="$(cat /secrets/sccache/connection-string)" | |
| echo "::add-mask::${SCCACHE_AZURE_CONNECTION_STRING}" | |
| echo "SCCACHE_AZURE_CONNECTION_STRING=${SCCACHE_AZURE_CONNECTION_STRING}" >> $GITHUB_ENV | |
| echo "✓ Connection string loaded and masked" | |
| - name: Clone OpenVINO | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| timeout-minutes: 15 | |
| with: | |
| path: ${{ env.OPENVINO_REPO }} | |
| submodules: 'true' | |
| - name: CMake configure | |
| run: | | |
| cmake \ | |
| -G "${{ env.CMAKE_GENERATOR }}" \ | |
| -DENABLE_CLANG_TIDY=ON \ | |
| -DENABLE_PROFILING_ITT=FULL \ | |
| -DENABLE_DEBUG_CAPS=ON \ | |
| -DSELECTIVE_BUILD=COLLECT \ | |
| -DENABLE_PYTHON=OFF \ | |
| -DENABLE_TESTS=OFF \ | |
| -DENABLE_NCC_STYLE=OFF \ | |
| -DCMAKE_RULE_MESSAGES=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ | |
| -S ${OPENVINO_REPO} \ | |
| -B ${BUILD_DIR} | |
| - name: Cmake build with clang-tidy enabled | |
| run: | | |
| cmake \ | |
| --build ${BUILD_DIR} \ | |
| --parallel $(($(nproc) - 1)) \ | |
| --config ${{ env.CMAKE_BUILD_TYPE }} \ | |
| --target openvino_intel_cpu_plugin \ | |
| -- -k | |
| # TODO: add --quiet after switch to Ubuntu 24.04+ | |
| - name: Show sccache stats | |
| run: ${SCCACHE_PATH} --show-stats | |
| Build-riscv64: | |
| needs: [Docker, Smart_CI] | |
| if: fromJSON(needs.smart_ci.outputs.affected_components).CPU && !needs.smart_ci.outputs.skip_workflow | |
| timeout-minutes: 150 | |
| defaults: | |
| run: | |
| shell: bash | |
| runs-on: aks-linux-16-cores-32gb | |
| container: | |
| image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_riscv_xuantie }} | |
| volumes: | |
| - /mount:/mount | |
| - /home/runner/secrets/:/secrets:ro | |
| options: -e SCCACHE_AZURE_BLOB_CONTAINER | |
| env: | |
| DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input | |
| CMAKE_BUILD_TYPE: 'Release' | |
| CMAKE_GENERATOR: 'Unix Makefiles' | |
| CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
| CMAKE_C_COMPILER_LAUNCHER: sccache | |
| CMAKE_COMPILE_WARNING_AS_ERROR: 'ON' | |
| SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
| SCCACHE_SERVER_PORT: 35555 | |
| SCCACHE_ERROR_LOG: /__w/openvino/sccache_log.txt | |
| SCCACHE_LOG: warn | |
| GITHUB_WORKSPACE: '/__w/openvino/openvino' | |
| OPENVINO_REPO: /__w/openvino/openvino/openvino | |
| BUILD_DIR: /__w/openvino/openvino/openvino_build | |
| SCCACHE_AZURE_KEY_PREFIX: ubuntu24_x86_64_Release_itt_faster_build_clang_tidy_riscv64 | |
| steps: | |
| - name: Append the environment variable - load SCCACHE_AZURE_CONNECTION_STRING from file | |
| shell: bash | |
| run: | | |
| SCCACHE_AZURE_CONNECTION_STRING="$(cat /secrets/sccache/connection-string)" | |
| echo "::add-mask::${SCCACHE_AZURE_CONNECTION_STRING}" | |
| echo "SCCACHE_AZURE_CONNECTION_STRING=${SCCACHE_AZURE_CONNECTION_STRING}" >> $GITHUB_ENV | |
| echo "✓ Connection string loaded and masked" | |
| - name: Clone OpenVINO | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| timeout-minutes: 15 | |
| with: | |
| path: ${{ env.OPENVINO_REPO }} | |
| submodules: 'true' | |
| - name: CMake configure | |
| run: | | |
| cmake \ | |
| -G "${{ env.CMAKE_GENERATOR }}" \ | |
| -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/riscv64-100-xuantie-gnu.toolchain.cmake \ | |
| -DENABLE_CLANG_TIDY=ON \ | |
| -DENABLE_PROFILING_ITT=FULL \ | |
| -DENABLE_DEBUG_CAPS=ON \ | |
| -DSELECTIVE_BUILD=COLLECT \ | |
| -DENABLE_PYTHON=OFF \ | |
| -DENABLE_TESTS=OFF \ | |
| -DENABLE_NCC_STYLE=OFF \ | |
| -DCMAKE_RULE_MESSAGES=OFF \ | |
| -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ | |
| -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ | |
| -DTHREADING=SEQ \ | |
| -S ${OPENVINO_REPO} \ | |
| -B ${BUILD_DIR} | |
| - name: Cmake build with clang-tidy enabled | |
| run: | | |
| cmake \ | |
| --build ${BUILD_DIR} \ | |
| --parallel $(($(nproc) - 1)) \ | |
| --config ${{ env.CMAKE_BUILD_TYPE }} \ | |
| --target openvino_intel_cpu_plugin \ | |
| -- -k | |
| # TODO: add --quiet after switch to Ubuntu 24.04+ | |
| Overall_Status: | |
| name: ci/gha_overall_status_clang_tidy | |
| needs: [Smart_CI, Build, Build-aarch64, Build-riscv64] | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check status of all jobs | |
| if: >- | |
| ${{ | |
| contains(needs.*.result, 'failure') || | |
| contains(needs.*.result, 'cancelled') | |
| }} | |
| run: exit 1 |