Windows Conditional Compilation (VS 2022, Python 3.11) #402
This file contains 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: Windows Conditional Compilation (VS 2022, Python 3.11) | |
on: | |
workflow_dispatch: | |
schedule: | |
# run daily at 00:00 | |
- cron: '0 0 * * *' | |
pull_request: | |
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 }}-windows-cc | |
cancel-in-progress: true | |
env: | |
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 }} | |
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/*' | |
Build: | |
needs: Smart_CI | |
timeout-minutes: 180 | |
defaults: | |
run: | |
shell: pwsh | |
runs-on: aks-win-8-cores-64gb | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_GENERATOR: 'Ninja Multi-Config' | |
CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
CMAKE_C_COMPILER_LAUNCHER: sccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
SCCACHE_IDLE_TIMEOUT: 0 | |
SCCACHE_ERROR_LOG: "${{ github.workspace }}\\openvino\\sccache_log.txt" | |
SCCACHE_LOG: warn | |
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" | |
# TODO: specify version of compiler here | |
SCCACHE_AZURE_KEY_PREFIX: windows2022_x86_64_itt_Release | |
if: ${{ !needs.smart_ci.outputs.skip_workflow && github.event_name != 'merge_group' }} | |
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 sccache | |
uses: mozilla-actions/sccache-action@v0.0.4 | |
with: | |
version: "v0.7.5" | |
- name: Install build dependencies | |
run: | | |
Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip -OutFile ninja-win.zip -MaximumRetryCount 10 | |
Expand-Archive -Force ninja-win.zip | |
# Add it to the GitHub Path so it would be available in the subsequent steps | |
Add-Content -Path $env:GITHUB_PATH -Value "${{ github.workspace }}/ninja-win" | |
- 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 getting rid of SSL issues during model downloading for unit tests | |
python3 -m pip install certifi | |
# Disabled because of CVS-95904 | |
# 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: Set SSL_CERT_FILE for model downloading for unit tests | |
run: echo SSL_CERT_FILE=$(python3 -m certifi) >> $env:GITHUB_ENV | |
- name: CMake configure - CC COLLECT | |
run: | | |
cmake -G "${{ env.CMAKE_GENERATOR }}" ` | |
-DBUILD_SHARED_LIBS=OFF ` | |
-DCMAKE_CXX_STANDARD=20 ` | |
-DENABLE_TESTS=ON ` | |
-DENABLE_CPPLINT=OFF ` | |
-DENABLE_NCC_STYLE=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: Clean sccache stats | |
run: '& "$Env:SCCACHE_PATH" --zero-stats' | |
# to get more information on the issue | |
# described in the next step | |
- name: Show which network ports are used | |
run: netstat -ban | |
# the case is the following: | |
# sccache: error: An attempt was made to access a socket in a way forbidden by its access permissions. (os error 10013) | |
# This looks like the attempt to use | |
# a port below 1024 or a port | |
# which is occupied by another app | |
- name: Stop sccache server just in case | |
run: '& "$Env:SCCACHE_PATH" --stop-server' | |
- name: Cmake build - CC COLLECT | |
run: | | |
cmake --build ${{ env.BUILD_DIR }} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} && ` | |
cmake --build ${{ env.BUILD_DIR }} --parallel 8 --config ${{ env.CMAKE_BUILD_TYPE }} --target sea_itt_lib | |
- name: Show sccache stats | |
run: '& "$Env:SCCACHE_PATH" --show-stats' | |
- 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.ps1 -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;${{ env.BUILD_DIR }}\bin\Release | |
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;${{ env.BUILD_DIR }}\bin\Release | |
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.BUILD_DIR }}/bin/Release/ze_loader.dll", "${{ env.OPENVINO_REPO }}/bin/intel64/${{ env.CMAKE_BUILD_TYPE }}/openvino_template_extension.dll", "${{ 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 | |
# | |
# Upload build artifacts and logs | |
# | |
- name: Upload build logs | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: build_logs | |
path: ${{ env.SCCACHE_ERROR_LOG }} | |
if-no-files-found: 'ignore' | |
- name: Upload selective build statistics package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
with: | |
name: openvino_tests | |
path: ${{ env.BUILD_DIR }}/openvino_tests.zip | |
if-no-files-found: 'error' | |
CC_Build: | |
name: Conditional Compilation | |
needs: [Build, Smart_CI] | |
defaults: | |
run: | |
shell: pwsh | |
runs-on: aks-win-8-cores-64gb | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
CMAKE_C_COMPILER_LAUNCHER: sccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
SCCACHE_IDLE_TIMEOUT: 0 | |
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" | |
SCCACHE_AZURE_KEY_PREFIX: windows2022_x86_64_cc_Release | |
if: "!needs.smart_ci.outputs.skip_workflow" | |
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@v4 | |
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: 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 sccache | |
uses: mozilla-actions/sccache-action@v0.0.4 | |
with: | |
version: "v0.5.4" | |
- 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_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: Clean sccache stats | |
run: '& "$Env:SCCACHE_PATH" --zero-stats' | |
- name: Cmake build - CC ON | |
run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target benchmark_app | |
- name: Show sccache stats | |
run: '& "$Env:SCCACHE_PATH" --show-stats' | |
- 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.BUILD_DIR }}\bin\Release | |
${{ 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, Smart_CI] | |
timeout-minutes: 85 | |
defaults: | |
run: | |
shell: pwsh | |
runs-on: aks-win-8-cores-16gb | |
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" | |
if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test | |
steps: | |
- name: Download OpenVINO tests package | |
uses: actions/download-artifact@v4 | |
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;${{ env.INSTALL_TEST_DIR }} | |
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: 60 | |
- name: Upload Test Results | |
uses: actions/upload-artifact@v4 | |
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' | |
Overall_Status: | |
name: ci/gha_overall_status_windows_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 |