name: Windows Conditional Compilation (VS 2022, Python 3.11) on: workflow_dispatch: schedule: # run daily at 00:00 - cron: '0 0 * * *' # pull_request: # paths-ignore: # - '**/docs/**' # - 'docs/**' # - '**/**.md' # - '**.md' # - '**/layer_tests_summary/**' # - '**/conformance/**' # push: # paths-ignore: # - '**/docs/**' # - 'docs/**' # - '**/**.md' # - '**.md' # - '**/layer_tests_summary/**' # - '**/conformance/**' # branches: # - master concurrency: # github.ref is not unique in post-commit group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-windows-cc cancel-in-progress: true env: PYTHON_VERSION: '3.11' jobs: Build: timeout-minutes: 180 defaults: run: shell: pwsh runs-on: windows-latest-8-cores env: CMAKE_BUILD_TYPE: 'Release' CMAKE_GENERATOR: 'Ninja Multi-Config' CMAKE_CXX_COMPILER_LAUNCHER: sccache CMAKE_C_COMPILER_LAUNCHER: sccache OPENVINO_REPO: "${{ github.workspace }}\\openvino" INSTALL_DIR: "${{ github.workspace }}\\openvino_install" INSTALL_TEST_DIR: "${{ github.workspace }}\\tests_install" BUILD_DIR: "${{ github.workspace }}\\openvino_build" MODELS_PATH: "${{ github.workspace }}\\testdata" SELECTIVE_BUILD_STAT_DIR: "${{ github.workspace }}\\selective_build_stat" steps: - name: Clone OpenVINO uses: actions/checkout@v4 with: path: 'openvino' submodules: 'true' - name: Clone test models uses: actions/checkout@v4 with: repository: 'openvinotoolkit/testdata' path: 'testdata' lfs: 'true' ref: 'master' # # Print system info # - name: System info uses: ./openvino/.github/actions/system_info # # Dependencies # - name: Setup Python ${{ env.PYTHON_VERSION }} uses: ./openvino/.github/actions/setup_python with: version: ${{ env.PYTHON_VERSION }} should-setup-pip-paths: 'false' self-hosted-runner: 'false' - name: Install build dependencies run: choco install --no-progress ninja - name: Install python dependencies run: | # For running ONNX frontend unit tests python3 -m pip install --force-reinstall -r ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/requirements.txt # For running TensorFlow frontend unit tests python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow/tests/requirements.txt # For running TensorFlow Lite frontend unit tests python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow_lite/tests/requirements.txt # For running Paddle frontend unit tests python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt # # Build # - name: Configure Developer Command Prompt for Microsoft Visual C++ uses: ilammy/msvc-dev-cmd@v1 - name: Setup sccache uses: hendrikmuhs/ccache-action@v1.2 with: variant: sccache max-size: "2000M" # Should save cache only if run in the master branch of the base repo # github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push save: ${{ github.ref_name == 'master' && 'true' || 'false' }} key: ${{ github.job }}-${{ runner.os }}-itt restore-keys: | ${{ github.job }}-${{ runner.os }}-itt - 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_DISABLE_FIND_PACKAGE_PkgConfig=ON ` -S ${{ env.OPENVINO_REPO }} ` -B ${{ env.BUILD_DIR }} - name: Cmake build - CC COLLECT run: | cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib - name: Cmake install - OpenVINO run: cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake - name: Build C++ samples - OpenVINO build tree run: | cmake -G "${{ env.CMAKE_GENERATOR }}" -DOpenVINO_DIR=${{ env.BUILD_DIR }} -S ${{ env.INSTALL_DIR }}/samples/cpp -B ${{ env.BUILD_DIR }}/cpp_samples cmake --build ${{ env.BUILD_DIR }}/cpp_samples --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target hello_query_device - name: Build C samples - OpenVINO install tree run: | & ${{ env.INSTALL_DIR }}/samples/c/build_samples_msvc.bat -i ${{ env.INSTALL_DIR }} -b ${{ env.BUILD_DIR }}/c_samples - name: Ctest - OpenVINO unit tests shell: cmd run: | set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin ctest -C ${{ env.CMAKE_BUILD_TYPE }} --test-dir ${{ env.BUILD_DIR }} -V -L UNIT - name: Perform code tracing via ITT collector shell: cmd run: | set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin python3 ${{ env.OPENVINO_REPO }}\thirdparty\itt_collector\runtool\sea_runtool.py ^ --bindir ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }} ^ -o ${{ env.SELECTIVE_BUILD_STAT_DIR }}\itt_stat ! ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }}\benchmark_app.exe ^ -niter 1 ^ -nireq 1 ^ -m ${{ env.MODELS_PATH }}\models\test_model\test_model_fp32.xml ^ -d CPU - name: List bin files shell: cmd run: dir ${{ env.OPENVINO_REPO }}\bin\ /s - name: List install files shell: cmd run: dir ${{ env.INSTALL_DIR }} /s - name: Pack Artifacts run: | $file=Get-ChildItem -Path "${{ env.SELECTIVE_BUILD_STAT_DIR }}" $compress = @{ Path = $file CompressionLevel = "Optimal" DestinationPath = "${{ env.BUILD_DIR }}/openvino_selective_build_stat.zip" } Compress-Archive @compress $compress = @{ Path = "${{ env.OPENVINO_REPO }}/bin/intel64/${{ env.CMAKE_BUILD_TYPE }}/ov_cpu_func_tests.exe", "${{ env.OPENVINO_REPO }}/src/tests/test_utils/functional_test_utils/layer_tests_summary", "${{ env.INSTALL_DIR }}/runtime/3rdparty/tbb" CompressionLevel = "Optimal" DestinationPath = "${{ env.BUILD_DIR }}/openvino_tests.zip" } Compress-Archive @compress - 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.zip 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.zip if-no-files-found: 'error' CC_Build: name: Conditional Compilation needs: Build defaults: run: shell: pwsh runs-on: windows-latest-8-cores env: CMAKE_BUILD_TYPE: 'Release' CMAKE_CXX_COMPILER_LAUNCHER: sccache CMAKE_C_COMPILER_LAUNCHER: sccache OPENVINO_REPO: "${{ github.workspace }}\\openvino" BUILD_DIR: "${{ github.workspace }}\\openvino_build" MODELS_PATH: "${{ github.workspace }}\\testdata" SELECTIVE_BUILD_STAT_DIR: "${{ github.workspace }}\\selective_build_stat" steps: - name: Clone OpenVINO uses: actions/checkout@v4 with: path: 'openvino' submodules: 'true' - name: Clone test models uses: actions/checkout@v4 with: repository: 'openvinotoolkit/testdata' path: 'testdata' lfs: 'true' ref: 'master' - name: Download selective build statistics package uses: actions/download-artifact@v3 with: name: openvino_selective_build_stat path: ${{ env.SELECTIVE_BUILD_STAT_DIR }} - name: Extract selective build statistics package run: Expand-Archive ${{ env.SELECTIVE_BUILD_STAT_DIR }}/openvino_selective_build_stat.zip -DestinationPath "${{ env.SELECTIVE_BUILD_STAT_DIR }}" - name: CMake configure - CC ON run: | cmake ` -DBUILD_SHARED_LIBS=OFF ` -DENABLE_CPPLINT=OFF ` -DSELECTIVE_BUILD=ON ` -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=${{ env.SELECTIVE_BUILD_STAT_DIR }}\*.csv ` -S ${{ env.OPENVINO_REPO }} ` -B ${{ env.BUILD_DIR }} - name: Cmake build - CC ON run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target benchmark_app - name: List bin files shell: cmd run: dir ${{ env.OPENVINO_REPO }}\bin\ /s - name: Run with CC-ed runtime shell: cmd run: | set path=%path%;${{ env.OPENVINO_REPO }}\temp\tbb\bin ${{ env.OPENVINO_REPO }}\bin\intel64\${{ env.CMAKE_BUILD_TYPE }}\benchmark_app.exe -niter 1 -nireq 1 -m ${{ env.MODELS_PATH }}\models\test_model\test_model_fp32.xml -d CPU CPU_Functional_Tests: name: CPU functional tests needs: Build defaults: run: shell: pwsh runs-on: windows-latest-8-cores env: OPENVINO_REPO: "${{ github.workspace }}\\openvino" INSTALL_TEST_DIR: "${{ github.workspace }}\\tests_install" PARALLEL_TEST_SCRIPT: "${{ github.workspace }}\\tests_install\\layer_tests_summary\\run_parallel.py" PARALLEL_TEST_CACHE: "${{ github.workspace }}\\tests_install\\test_cache.lst" steps: - name: Download OpenVINO tests package uses: actions/download-artifact@v3 with: name: openvino_tests path: ${{ env.INSTALL_TEST_DIR }} - name: Extract OpenVINO tests package run: Expand-Archive ${{ env.INSTALL_TEST_DIR }}/openvino_tests.zip -DestinationPath "${{ env.INSTALL_TEST_DIR }}" - name: Fetch setup_python action uses: actions/checkout@v4 with: sparse-checkout: | .github/actions/setup_python/action.yml sparse-checkout-cone-mode: false path: 'openvino' - name: Setup Python ${{ env.PYTHON_VERSION }} uses: ./openvino/.github/actions/setup_python with: version: ${{ env.PYTHON_VERSION }} should-setup-pip-paths: 'false' self-hosted-runner: 'false' - name: Install python dependencies for run_parallel.py run: python3 -m pip install -r ${{ env.INSTALL_TEST_DIR }}/layer_tests_summary/requirements.txt # Windows pipeline is in nightly mode, uncomment once there is a consistent cache creation # - name: Restore tests execution time # uses: actions/cache/restore@v3 # with: # path: ${{ env.PARALLEL_TEST_CACHE }} # key: ${{ runner.os }}-tests-functional-cpu-stamp-${{ github.sha }} # restore-keys: | # ${{ runner.os }}-tests-functional-cpu-stamp - name: Intel CPU plugin func tests (parallel) shell: cmd run: | set path=%path%;${{ env.INSTALL_TEST_DIR }}\tbb\bin;${{ env.INSTALL_TEST_DIR }}\tbb python3 ${{ env.PARALLEL_TEST_SCRIPT }} -e ${{ env.INSTALL_TEST_DIR }}\ov_cpu_func_tests.exe -w ${{ env.INSTALL_TEST_DIR }} -s suite -rf 0 -- --gtest_print_time=1 --gtest_filter=*smoke* timeout-minutes: 45 - name: Upload Test Results uses: actions/upload-artifact@v3 if: ${{ !cancelled() }} with: name: test-results-functional-cpu path: | ${{ env.INSTALL_TEST_DIR }}/TEST*.xml ${{ env.INSTALL_TEST_DIR }}/logs/failed/*.log ${{ env.INSTALL_TEST_DIR }}/logs/crashed/*.log ${{ env.INSTALL_TEST_DIR }}/logs/hanged/*.log ${{ env.INSTALL_TEST_DIR }}/logs/interapted/*.log ${{ env.INSTALL_TEST_DIR }}/logs/disabled_tests.log if-no-files-found: 'error'