name: Linux Static CC (Ubuntu 22.04, Python 3.11, Clang) on: workflow_dispatch: pull_request: push: branches: - master - 'releases/**' concurrency: # github.ref is not unique in post-commit group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-linux-cc cancel-in-progress: true env: PIP_CACHE_PATH: /mount/caches/pip/linux PYTHON_VERSION: '3.11' jobs: Smart_CI: runs-on: ubuntu-latest outputs: affected_components: "${{ steps.smart_ci.outputs.affected_components }}" skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}" steps: - name: checkout action uses: actions/checkout@v4 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 }} 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/*' Build: needs: Smart_CI timeout-minutes: 150 defaults: run: shell: bash runs-on: aks-linux-16-cores-32gb container: image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04 volumes: - /mount:/mount options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING 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 GITHUB_WORKSPACE: '/__w/openvino/openvino' OPENVINO_REPO: /__w/openvino/openvino/openvino INSTALL_DIR: /__w/openvino/openvino/openvino_install INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install BUILD_DIR: /__w/openvino/openvino/openvino_build SELECTIVE_BUILD_STAT_DIR: /__w/openvino/openvino/selective_build_stat MODELS_PATH: /__w/openvino/openvino/testdata SCCACHE_AZURE_KEY_PREFIX: ubuntu22_x86_64_itt_clang_Release if: "!needs.smart_ci.outputs.skip_workflow" steps: - name: Install git run: | apt-get update apt-get install --assume-yes --no-install-recommends git ca-certificates git-lfs - name: Clone OpenVINO uses: actions/checkout@v4 with: path: ${{ env.OPENVINO_REPO }} submodules: 'true' - name: Clone test models uses: actions/checkout@v4 with: repository: 'openvinotoolkit/testdata' path: ${{ env.MODELS_PATH }} lfs: 'true' ref: 'master' # # Print system info # - name: System info uses: ./openvino/.github/actions/system_info # # Dependencies # - name: Install build dependencies run: | bash ${OPENVINO_REPO}/install_build_dependencies.sh # use clang as a default compiler apt --assume-yes install clang update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100 - name: Install sccache uses: mozilla-actions/sccache-action@v0.0.3 with: version: "v0.5.4" - name: Setup Python ${{ env.PYTHON_VERSION }} uses: ./openvino/.github/actions/setup_python with: version: ${{ env.PYTHON_VERSION }} pip-cache-path: ${{ env.PIP_CACHE_PATH }} should-setup-pip-paths: 'true' self-hosted-runner: 'true' - name: Install python dependencies run: | # For running ONNX frontend unit tests python3 -m pip install --force-reinstall -r ${OPENVINO_REPO}/src/frontends/onnx/tests/requirements.txt # For running TensorFlow frontend unit tests python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow/tests/requirements.txt # For running TensorFlow Lite frontend unit tests python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/tensorflow_lite/tests/requirements.txt # For running Paddle frontend unit tests python3 -m pip install -r ${OPENVINO_REPO}/src/frontends/paddle/tests/requirements.txt # # Build # - name: CMake configure - CC COLLECT run: | cmake \ -G "${{ env.CMAKE_GENERATOR }}" \ -DBUILD_SHARED_LIBS=OFF \ -DENABLE_TESTS=ON \ -DENABLE_CPPLINT=OFF \ -DENABLE_NCC_STYLE=OFF \ -DENABLE_INTEL_GNA=OFF \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ -DENABLE_PROFILING_ITT=ON \ -DSELECTIVE_BUILD=COLLECT \ -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 - CC COLLECT run: | cmake --build ${BUILD_DIR} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib - name: Show sccache stats run: ${SCCACHE_PATH} --show-stats - name: Cmake install - OpenVINO run: | cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -P ${BUILD_DIR}/cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_TEST_DIR} -DCOMPONENT=tests -P ${BUILD_DIR}/cmake_install.cmake - name: Build C++ samples - OpenVINO build tree run: | cmake -G "${{ env.CMAKE_GENERATOR }}" -DOpenVINO_DIR=${BUILD_DIR} -S ${INSTALL_DIR}/samples/cpp -B ${BUILD_DIR}/cpp_samples cmake --build ${BUILD_DIR}/cpp_samples --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target hello_query_device - name: Build C samples - OpenVINO install tree run: ${INSTALL_DIR}/samples/c/build_samples.sh -i ${INSTALL_DIR} -b ${BUILD_DIR}/c_samples - name: Ctest - OpenVINO unit tests run: ctest -C ${{ env.CMAKE_BUILD_TYPE }} --test-dir ${BUILD_DIR} -V -L UNIT - name: Perform code tracing via ITT collector run: | python3 ${OPENVINO_REPO}/thirdparty/itt_collector/runtool/sea_runtool.py \ --bindir ${OPENVINO_REPO}/bin/intel64/Release -o ${SELECTIVE_BUILD_STAT_DIR}/itt_stat ! \ ${OPENVINO_REPO}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 \ -m ${MODELS_PATH}/models/test_model/test_model_fp32.xml -d CPU - name: Pack Artifacts run: | pushd ${SELECTIVE_BUILD_STAT_DIR} tar -czvf ${BUILD_DIR}/openvino_selective_build_stat.tar.gz * popd pushd ${INSTALL_DIR} tar -czvf ${BUILD_DIR}/openvino_package.tar.gz \ install_dependencies/install_openvino_dependencies.sh popd pushd ${INSTALL_TEST_DIR} tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz \ tests/ov_cpu_func_tests \ tests/libtemplate_extension.so \ tests/functional_test_utils/layer_tests_summary/* popd - name: Upload openvino package if: ${{ always() }} uses: actions/upload-artifact@v3 with: name: openvino_package path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz if-no-files-found: 'error' - name: Upload selective build statistics package if: ${{ always() }} uses: actions/upload-artifact@v3 with: name: openvino_selective_build_stat path: ${{ env.BUILD_DIR }}/openvino_selective_build_stat.tar.gz if-no-files-found: 'error' - name: Upload OpenVINO tests package if: ${{ always() }} uses: actions/upload-artifact@v3 with: name: openvino_tests path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz if-no-files-found: 'error' CC_Build: name: Conditional Compilation needs: Build timeout-minutes: 10 defaults: run: shell: bash runs-on: aks-linux-16-cores-32gb container: image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04 volumes: - /mount:/mount options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING env: DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input CMAKE_CXX_COMPILER_LAUNCHER: sccache CMAKE_C_COMPILER_LAUNCHER: sccache GITHUB_WORKSPACE: '/__w/openvino/openvino' OPENVINO_REPO: /__w/openvino/openvino/openvino BUILD_DIR: /__w/openvino/openvino/openvino_build SELECTIVE_BUILD_STAT_DIR: /__w/openvino/openvino/selective_build_stat MODELS_PATH: /__w/openvino/openvino/testdata SCCACHE_AZURE_KEY_PREFIX: ubuntu22_x86_64_cc_Release steps: - name: Install git run: apt-get update && apt-get install --assume-yes --no-install-recommends git ca-certificates git-lfs - name: Clone OpenVINO uses: actions/checkout@v4 with: path: ${{ env.OPENVINO_REPO }} submodules: 'true' - name: Clone test models uses: actions/checkout@v4 with: repository: 'openvinotoolkit/testdata' path: ${{ env.MODELS_PATH }} lfs: 'true' ref: 'master' - name: Download selective build statistics package uses: actions/download-artifact@v4 with: name: openvino_selective_build_stat path: ${{ env.SELECTIVE_BUILD_STAT_DIR }} - name: Extract selective build statistics package run: tar -xvzf ${SELECTIVE_BUILD_STAT_DIR}/openvino_selective_build_stat.tar.gz -C ${SELECTIVE_BUILD_STAT_DIR} # # Dependencies # - name: Install build dependencies run: bash ${OPENVINO_REPO}/install_build_dependencies.sh - name: Install sccache uses: mozilla-actions/sccache-action@v0.0.3 with: version: "v0.5.4" # # Build # - name: CMake configure - CC ON run: | cmake \ -DBUILD_SHARED_LIBS=OFF \ -DENABLE_CPPLINT=OFF \ -DSELECTIVE_BUILD=ON \ -DENABLE_LTO=OFF \ -DENABLE_TEMPLATE=OFF \ -DENABLE_INTEL_GPU=OFF \ -DENABLE_INTEL_GNA=OFF \ -DENABLE_OV_TF_FRONTEND=OFF \ -DENABLE_OV_TF_LITE_FRONTEND=OFF \ -DENABLE_OV_PADDLE_FRONTEND=OFF \ -DENABLE_OV_PYTORCH_FRONTEND=OFF \ -DENABLE_OV_ONNX_FRONTEND=OFF \ -DSELECTIVE_BUILD_STAT=${SELECTIVE_BUILD_STAT_DIR}/*.csv \ -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 - CC ON run: cmake --build ${BUILD_DIR} --parallel 8 --target benchmark_app - name: Show ccache stats run: ${SCCACHE_PATH} --show-stats - name: Run with CC-ed runtime run: ${OPENVINO_REPO}/bin/intel64/Release/benchmark_app -niter 1 -nireq 1 -m ${MODELS_PATH}/models/test_model/test_model_fp32.xml -d CPU CPU_Functional_Tests: name: CPU functional tests if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test needs: [ Build, Smart_CI ] uses: ./.github/workflows/job_cpu_functional_tests.yml with: runner: 'aks-linux-8-cores-32gb' image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:22.04' Overall_Status: name: ci/gha_overall_status_linux_cc needs: [Smart_CI, Build, CC_Build, CPU_Functional_Tests] 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