name: Linux Debian (Ubuntu 20.04, Python 3.11) on: schedule: # run daily at 00:00 - cron: '0 0 * * *' workflow_dispatch: # 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: group: ${{ github.head_ref || github.run_id }}-linux-debian cancel-in-progress: true jobs: Build: # TODO: remove. Temporary measure to prevent the workflow from scheduling on forks. if: ${{ github.repository_owner == 'openvinotoolkit' }} defaults: run: shell: bash runs-on: ubuntu-20.04-8-cores env: CMAKE_BUILD_TYPE: 'Release' CMAKE_GENERATOR: 'Ninja' CMAKE_CXX_COMPILER_LAUNCHER: ccache CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_LINKER_LAUNCHER: ccache CMAKE_C_LINKER_LAUNCHER: ccache BUILD_TYPE: Release OPENVINO_REPO: ${{ github.workspace }}/openvino BUILD_DIR: ${{ github.workspace }}/build INSTALL_DIR: ${{ github.workspace }}/install INSTALL_TEST_DIR: ${{ github.workspace }}/install/tests LAYER_TESTS_INSTALL_DIR: ${{ github.workspace }}/install/tests/layer_tests DATA_PATH: ${{ github.workspace }}/testdata MODELS_PATH: ${{ github.workspace }}/testdata OV_TEMP: ${{ github.workspace }}/openvino_temp SAMPLES_INSTALL_DIR: /usr/share/openvino/samples PYTHON_STATIC_ARGS: -m "not dynamic_library and not template_plugin" steps: - name: Clone OpenVINO uses: actions/checkout@v4 with: path: 'openvino' submodules: 'recursive' - name: Clone testdata for C API tests uses: actions/checkout@v4 with: repository: 'openvinotoolkit/testdata' path: 'testdata' submodules: 'recursive' lfs: 'true' - name: Create Directories run: | mkdir -p ${{ env.BUILD_DIR }} mkdir -p ${{ env.INSTALL_DIR }} - name: Setup Python 3.11 uses: actions/setup-python@v4 with: python-version: '3.11' # # Dependencies # - name: Install build dependencies run: | sudo -E apt update sudo -E ${{ env.OPENVINO_REPO }}/install_build_dependencies.sh # 'clang' is used as a default compiler sudo apt --assume-yes install clang sudo apt --assume-yes install --no-install-recommends libopencv-imgproc-dev libopencv-imgcodecs-dev # Speed up build sudo apt -y --no-install-recommends install unzip wget https://github.com/ninja-build/ninja/releases/download/v1.10.2/ninja-linux.zip unzip ninja-linux.zip sudo cp -v ninja /usr/local/bin/ # Speed up tests git clone https://github.com/google/gtest-parallel.git - name: Install python dependencies run: | python3 -m pip install --upgrade pip python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/wheel/requirements-dev.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/requirements.txt # For running Python API tests python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt # For running Paddle frontend unit tests python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt # For running ONNX frontend unit tests python3 -m pip install -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 MO unit tests python3 -m pip install -U pip python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_mxnet.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_caffe.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_kaldi.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_onnx.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_tf2.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_dev.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt # for Python API tests python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/requirements_test.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements.txt - name: Setup ccache uses: hendrikmuhs/ccache-action@v1.2 with: 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' }} verbose: 2 key: ${{ github.job }}-linux-debian restore-keys: | ${{ github.job }}-linux-debian - name: Get tools versions run: | ninja --version ccache --version python3 --version cmake --version # # Build # - name: Get number of CPU cores uses: SimenB/github-actions-cpu-cores@v2 id: cpu-cores - name: CMake configure run: | cmake \ -GNinja \ -DENABLE_CPPLINT=OFF \ -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ -DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \ -DENABLE_PYTHON=ON \ -DENABLE_INTEL_GNA=OFF \ -DENABLE_TESTS=ON \ -DENABLE_FASTER_BUILD=ON \ -DENABLE_STRICT_DEPENDENCIES=OFF \ -DENABLE_SYSTEM_SNAPPY=ON \ -DENABLE_PYTHON_PACKAGING=ON \ -DCPACK_GENERATOR=DEB \ -S ${{ env.OPENVINO_REPO }} \ -B ${{ env.BUILD_DIR }} - name: Clean ccache stats run: ccache --zero-stats --show-config - name: Build run: cmake --build ${{ env.BUILD_DIR }} --parallel ${{ steps.cpu-cores.outputs.count }} --config ${{ env.BUILD_TYPE }} - name: Show ccache stats run: ccache --show-stats - name: CMake Layer Tests run: cmake -GNinja -S ${{ env.OPENVINO_REPO }}/tests/layer_tests -B ${{ env.BUILD_DIR }}/layer_tests - name: Build Layer Tests run: cmake --build ${{ env.BUILD_DIR }}/layer_tests --parallel --config ${{ env.BUILD_TYPE }} # to check that wheel packages tested later contain all the dependencies like TBB or pugixml - name: Remove debian dependencies run: sudo apt-get remove libtbb2 libpugixml1v5 -y - name: Install wheel packages run: cmake -DCOMPONENT=python_wheels -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake - name: Install Python Samples run: cmake -DCOMPONENT=python_samples -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake - name: Install Layer Tests run: cmake -DCOMPONENT=tests -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/layer_tests/cmake_install.cmake - name: Install tests run: cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCOMPONENT=tests -P ${{ env.BUILD_DIR }}/cmake_install.cmake - name: List install test files run: ls -alR ${{ env.INSTALL_DIR }} - name: Install python wheels run: python3 -m pip install openvino-dev --find-links=${{ env.INSTALL_DIR }}/tools - name: Build Debian packages run: | sudo apt-get install libtbb-dev libpugixml-dev -y cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} --target package --parallel - name: Install Debian packages run: | pushd ${{ env.BUILD_DIR }} # install debian packages from previous release sudo apt-get -y update sudo apt-get install --no-install-recommends gnupg wget -y wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB echo "deb https://apt.repos.intel.com/openvino/2023 ubuntu20 main" | sudo tee /etc/apt/sources.list.d/intel-openvino-2023.list sudo apt-get update -o Dir::Etc::sourcelist=/etc/apt/sources.list.d/intel-openvino-2023.list sudo apt-get install openvino -y # install our local one and make sure the conflicts are resolved sudo apt-get install --no-install-recommends dpkg-dev -y rm -r _CPack_Packages dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz echo "deb [trusted=yes] file:${{ env.BUILD_DIR }} ./" | sudo tee /etc/apt/sources.list.d/openvino-local.list sudo apt-get update sudo apt-get install openvino -y popd - name: List install files run: ls -alR ${{ env.INSTALL_DIR }} - name: Build cpp samples - gcc run: ${{ env.SAMPLES_INSTALL_DIR }}/cpp/build_samples.sh -i ${{ env.INSTALL_DIR }} - name: Build c samples run: ${{ env.SAMPLES_INSTALL_DIR }}/c/build_samples.sh -i ${{ env.INSTALL_DIR }} - name: OpenVINO Core Unit Tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_core_unit_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU* \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVCoreUT.xml - name: Proxy Plugin Tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_proxy_plugin_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVProxyTests.xml - name: Hetero Func Tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_hetero_func_tests --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OVHeteroFuncTests.xml - name: ONNX frontend tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_onnx_frontend_tests --gtest_print_time=1 --gtest_filter=-*IE_GPU*:*FrontEndLoadFromTest.testLoadFromTwoStreams*:*FrontEndLoadFromTest.testLoadFromTwoFiles* \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ONNXFrontend.xml - name: TensorFlow frontend tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_frontend_tests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowFrontend.xml # Disabled in Azure: https://github.com/openvinotoolkit/openvino/blob/master/.ci/azure/linux.yml#L403 # - name: PaddlePaddle frontend tests # run: | # ${{ env.INSTALL_TEST_DIR }}/paddle_tests --gtest_print_time=1 --gtest_filter=*smoke* \ # --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-PaddleTests.xml - name: TensorFlow Common tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_common_tests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowCommonFrontend.xml - name: TensorFlow Lite frontend tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_tensorflow_lite_frontend_tests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TensorFlowLiteFrontend.xml - name: Snippets func tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_snippets_func_tests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-SnippetsFuncTests.xml - name: CPU plugin unit tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_cpu_unit_tests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-CPUUnitTests.xml - name: AUTO UT run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_auto_unit_tests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_auto_unit_tests.xml - name: Template plugin tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_template_func_tests --gtest_print_time=1 \ --gtest_filter=*smoke* \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-TemplateFuncTests.xml - name: Inference Engine C API tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/InferenceEngineCAPITests --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-InferenceEngineCAPITests.xml - name: OpenVINO C API tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH ${{ env.INSTALL_TEST_DIR }}/ov_capi_test --gtest_print_time=1 \ --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-OpenVINOCAPITests.xml - name: nGraph and IE Python Bindings Tests run: | export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/pyngraph ${{ env.PYTHON_STATIC_ARGS }} \ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-Pyngraph.xml \ --ignore=${{ env.INSTALL_TEST_DIR }}/pyngraph/tests/test_onnx/test_zoo_models.py \ --ignore=${{ env.INSTALL_TEST_DIR }}/pyngraph/tests/test_onnx/test_backend.py - name: Python API 2.0 Tests run: | # For python imports to import pybind_mock_frontend export PYTHONPATH=${{ env.INSTALL_TEST_DIR }}:${{ env.OPENVINO_REPO }}/tools/mo:$PYTHONPATH export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH python3 -m pytest -sv ${{ env.INSTALL_TEST_DIR }}/pyopenvino \ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-Pyngraph.xml \ --ignore=${{ env.INSTALL_TEST_DIR }}/pyopenvino/tests/test_utils/test_utils.py - name: ONNX Frontend Python Tests run: | # For python imports to import pybind_mock_frontend export PYTHONPATH=${{ env.INSTALL_TEST_DIR }}:${{ env.OPENVINO_REPO }}/tools/mo:$PYTHONPATH export LD_LIBRARY_PATH=${{ env.INSTALL_TEST_DIR }}:$LD_LIBRARY_PATH python3 -m pytest -sv ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests \ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-ONNX-FE-PYTHON.xml \ --ignore=${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/test_python/test_zoo_models.py \ --ignore=${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/test_python/test_backend.py - name: Model Optimizer UT run: | export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.OPENVINO_REPO }}/tools/ovc/:${{ env.LAYER_TESTS_INSTALL_DIR }}:${{ env.INSTALL_TEST_DIR }}:${{ env.INSTALL_DIR }}/python/python3.11:$PYTHONPATH # Need to be reinstalled to have correct numpy version python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_mxnet.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_caffe.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_kaldi.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_onnx.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_tf2.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_dev.txt python3 -m pytest -s ${{ env.INSTALL_TEST_DIR }}/mo/unit_tests \ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-ModelOptimizer.xml # run not all smoke filter to save time in post-commit - name: CPU FuncTests run: ${{ env.INSTALL_TEST_DIR }}/ov_cpu_func_tests --gtest_filter=*OVCLass*:*CoreThreadingTests* --gtest_print_time=1 --gtest_output=xml:${{ env.INSTALL_TEST_DIR }}/TEST-ov_cpu_func_tests.xml - name: CMake Samples Tests run: cmake -GNinja -S ${{ env.OPENVINO_REPO }}/tests/samples_tests -B ${{ env.BUILD_DIR }}/samples_tests - name: Install Samples Tests run: cmake -DCOMPONENT=tests -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/samples_tests/cmake_install.cmake - name: Samples Smoke Tests run: | python3 -m pip install --ignore-installed PyYAML -r ${{ env.INSTALL_TEST_DIR }}/smoke_tests/requirements.txt export LD_LIBRARY_PATH=${{ env.IE_APP_PATH }}:$LD_LIBRARY_PATH python3 -m pytest -sv ${{ env.INSTALL_TEST_DIR }}/smoke_tests -k "not GNA" \ --env_conf ${{ env.INSTALL_TEST_DIR }}/smoke_tests/env_config.yml \ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-SamplesSmokeTests.xml env: IE_APP_PATH: ${{ env.INSTALL_DIR }}/samples_bin IE_APP_PYTHON_PATH: ${{ env.INSTALL_DIR }}/share/openvino/samples/python LD_LIBRARY_PATH: ${{ env.INSTALL_DIR }}/samples_bin SHARE: ${{ env.INSTALL_TEST_DIR }}/smoke_tests/samples_smoke_tests_data WORKSPACE: ${{ env.INSTALL_DIR }} - name: TensorFlow 1 Layer Tests - Legacy FE run: | python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_tests/test_tf_Roll.py --ir_version=10 --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tf_Roll.xml - name: TensorFlow Lite Layer Tests - TFL FE run: | python3 -m pip install -r ${{ env.LAYER_TESTS_INSTALL_DIR }}/requirements.txt export PYTHONPATH=${{ env.OPENVINO_REPO }}/tools/mo/:${{ env.LAYER_TESTS_INSTALL_DIR }}:$PYTHONPATH # Need to be reinstalled to have correct numpy version python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_caffe.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_kaldi.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_onnx.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_tf2.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_dev.txt python3 -m pip install -r ${{ env.OPENVINO_REPO }}/tools/mo/requirements_mxnet.txt python3 -m pytest ${{ env.LAYER_TESTS_INSTALL_DIR }}/tensorflow_lite_tests/ --junitxml=${{ env.INSTALL_TEST_DIR }}/TEST-tfl_fe.xml env: TEST_DEVICE: CPU - name: Upload Test Results uses: actions/upload-artifact@v3 if: ${{ always() }} with: name: test-results path: ${{ env.INSTALL_TEST_DIR }}/TEST*.xml if-no-files-found: 'error'