name: Linux ARM64 (Ubuntu 20.04, Python 3.11) 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-arm 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' - name: Show affected components run: | echo "${{ toJSON(steps.smart_ci.outputs.affected_components) }}" shell: bash Build: needs: Smart_CI timeout-minutes: 150 defaults: run: shell: bash runs-on: 'aks-linux-16-cores-arm' container: image: openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.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 OPENVINO_CONTRIB_REPO: /__w/openvino/openvino/openvino_contrib INSTALL_DIR: /__w/openvino/openvino/openvino_install INSTALL_TEST_DIR: /__w/openvino/openvino/tests_install DEVELOPER_PACKAGE_DIR: /__w/openvino/openvino/developer_package_install BUILD_DIR: /__w/openvino/openvino/openvino_build SCCACHE_AZURE_KEY_PREFIX: 'ubuntu20_aarch64_Release' ONNX_RUNTIME_UTILS: /__w/openvino/openvino/openvino/.ci/azure/ci_utils/onnxruntime 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 - name: Clone OpenVINO uses: actions/checkout@v4 with: path: ${{ env.OPENVINO_REPO }} submodules: 'true' - name: Clone OpenVINO Contrib uses: actions/checkout@v4 with: repository: 'openvinotoolkit/openvino_contrib' path: ${{ env.OPENVINO_CONTRIB_REPO }} submodules: '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 # default-jdk - Java API apt install --assume-yes --no-install-recommends default-jdk - 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' show-cache-info: 'true' - name: Install python dependencies run: | # For Python API: build and wheel packaging python3 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/wheel/requirements-dev.txt python3 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt # 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 - OpenVINO run: | cmake \ -G "${{ env.CMAKE_GENERATOR }}" \ -DENABLE_CPPLINT=OFF \ -DENABLE_NCC_STYLE=OFF \ -DENABLE_TESTS=ON \ -DENABLE_STRICT_DEPENDENCIES=OFF \ -DENABLE_SYSTEM_OPENCL=ON \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCPACK_GENERATOR=TGZ \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ -S ${OPENVINO_REPO} \ -B ${BUILD_DIR} - name: Clean sccache stats run: ${SCCACHE_PATH} --zero-stats - name: Cmake build - OpenVINO run: cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} - 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 cmake -DCMAKE_INSTALL_PREFIX=${DEVELOPER_PACKAGE_DIR} -DCOMPONENT=developer_package -P ${BUILD_DIR}/cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -DCOMPONENT=python_wheels -P ${BUILD_DIR}/cmake_install.cmake - name: Pack Artifacts run: | # Add the ONNX Runtime version and skip tests list to the archive to use in the ONNX Runtime Job # w/o the need to checkout repository cp -R ${ONNX_RUNTIME_UTILS} ${INSTALL_DIR} pushd ${INSTALL_DIR} tar -czvf ${BUILD_DIR}/openvino_package.tar.gz * popd pushd ${DEVELOPER_PACKAGE_DIR} tar -czvf ${BUILD_DIR}/openvino_developer_package.tar.gz * popd pushd ${INSTALL_TEST_DIR} tar -czvf ${BUILD_DIR}/openvino_tests.tar.gz * popd - name: Build Debian packages if: ${{ 'false' }} run: | /usr/bin/python3.8 -m pip install -U pip /usr/bin/python3.8 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/wheel/requirements-dev.txt /usr/bin/python3.8 -m pip install -r ${OPENVINO_REPO}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt cmake -UPYTHON* \ -DENABLE_PYTHON_PACKAGING=ON \ -DENABLE_TESTS=OFF \ -DPython3_EXECUTABLE=/usr/bin/python3.8 \ -DCPACK_GENERATOR=DEB \ ${BUILD_DIR} cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} --target package - name: Cmake & Build - OpenVINO Contrib run: | cmake \ -DBUILD_nvidia_plugin=OFF \ -DCUSTOM_OPERATIONS="calculate_grid;complex_mul;fft;grid_sample;sparse_conv;sparse_conv_transpose" \ -DOPENVINO_EXTRA_MODULES=${OPENVINO_CONTRIB_REPO}/modules \ -S ${OPENVINO_REPO} \ -B ${BUILD_DIR} cmake --build ${BUILD_DIR} --parallel --config ${{ env.CMAKE_BUILD_TYPE }} # # Upload build artifacts # - 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 openvino developer package if: ${{ always() }} uses: actions/upload-artifact@v3 with: name: openvino_developer_package path: ${{ env.BUILD_DIR }}/openvino_developer_package.tar.gz if-no-files-found: 'error' - name: Upload openvino debian packages if: ${{ 'false' }} uses: actions/upload-artifact@v3 with: name: openvino_debian_packages path: ${{ env.BUILD_DIR }}/*.deb 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' Debian_Packages: name: Debian Packages needs: Build if: ${{ 'false' }} uses: ./.github/workflows/job_debian_packages.yml with: runner: 'aks-linux-16-cores-arm' image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04' Samples: needs: [ Build, Smart_CI ] if: fromJSON(needs.smart_ci.outputs.affected_components).samples uses: ./.github/workflows/job_samples_tests.yml with: runner: 'aks-linux-16-cores-arm' image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04' affected-components: ${{ needs.smart_ci.outputs.affected_components }} ONNX_Runtime: name: ONNX Runtime Integration if: fromJSON(needs.smart_ci.outputs.affected_components).ONNX_RT needs: [ Build, Smart_CI ] uses: ./.github/workflows/job_onnx_runtime.yml with: runner: 'aks-linux-16-cores-arm' container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04", "volumes": ["/mount:/mount"], "options": "-e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING"}' sccache-azure-key-prefix: 'ubuntu20_aarch64_onnxruntime' CXX_Unit_Tests: name: C++ unit tests needs: [ Build, Smart_CI ] uses: ./.github/workflows/job_cxx_unit_tests.yml with: runner: 'aks-linux-16-cores-arm' image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04' affected-components: ${{ needs.smart_ci.outputs.affected_components }} Python_Unit_Tests: name: Python unit tests needs: [ Build, Smart_CI ] uses: ./.github/workflows/job_python_unit_tests.yml with: runner: 'aks-linux-16-cores-arm' container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04", "volumes": ["/mount:/mount"]}' affected-components: ${{ needs.smart_ci.outputs.affected_components }} 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-16-cores-arm' image: 'openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04' TensorFlow_Hub_Models_Tests: name: TensorFlow Hub Models tests if: ${{ 'false' }} # TODO: Enable once the dependencies are ready for arm (no tensorflow-text available for arm from PyPI) # if: fromJSON(needs.smart_ci.outputs.affected_components).TF_FE.test || # fromJSON(needs.smart_ci.outputs.affected_components).TFL_FE.test needs: [ Build, Smart_CI ] uses: ./.github/workflows/job_tensorflow_hub_models_tests.yml with: runner: 'aks-linux-16-cores-arm' container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04"}' event: ${{ github.event_name }} PyTorch_Models_Tests: name: PyTorch Models tests if: ${{ 'false' }} # TODO: Enable once the dependencies are ready for arm (no tensorflow-text available for arm from PyPI) # if: fromJSON(needs.smart_ci.outputs.affected_components).PyTorch_FE.test needs: [ Build, Smart_CI ] uses: ./.github/workflows/job_pytorch_models_tests.yml with: runner: 'aks-linux-16-cores-arm' container: '{"image": "openvinogithubactions.azurecr.io/dockerhub/ubuntu:20.04"}' event: ${{ github.event_name }} Overall_Status: name: ci/gha_overall_status_linux_arm64 needs: [Smart_CI, Build, Debian_Packages, Samples, ONNX_Runtime, CXX_Unit_Tests, Python_Unit_Tests, CPU_Functional_Tests, TensorFlow_Hub_Models_Tests, PyTorch_Models_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