Skip to content

Android

Android #8889

Workflow file for this run

name: Android
on:
workflow_dispatch:
inputs:
target-branch:
description: 'Target branch for the build; taken from event context by default'
type: string
required: false
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
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 }}-android
cancel-in-progress: true
permissions: read-all
jobs:
Smart_CI:
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false || github.run_attempt > 1
outputs:
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
changed_components: "${{ steps.smart_ci.outputs.changed_components }}"
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
steps:
- name: checkout action
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
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/*'
Docker:
needs: Smart_CI
runs-on: aks-linux-4-cores-16gb-docker-build
container:
image: openvinogithubactions.azurecr.io/docker_build:0.2
volumes:
- /mount:/mount
outputs:
images: "${{ steps.handle_docker.outputs.images && steps.handle_docker.outputs.images || steps.mock_image.outputs.images }}"
steps:
- name: Set mock output images if pipeline should be skipped
if: ${{ needs.smart_ci.outputs.skip_workflow == 'True' }}
id: mock_image
run: echo "images={\"ov_build\":{\"ubuntu_22_04_android\":\"mock\"}}" >> "$GITHUB_OUTPUT"
- name: Checkout
if: ${{ needs.smart_ci.outputs.skip_workflow != 'True' }}
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
- uses: ./.github/actions/handle_docker
if: ${{ needs.smart_ci.outputs.skip_workflow != 'True' }}
id: handle_docker
with:
images: |
ov_build/ubuntu_22_04_android
ov_test/ubuntu_22_04_android
registry: 'openvinogithubactions.azurecr.io'
dockerfiles_root_dir: '.github/dockerfiles'
changed_components: ${{ needs.smart_ci.outputs.changed_components }}
Build:
name: Build ${{ matrix.arch }}
needs: [Smart_CI, Docker]
if: "!needs.smart_ci.outputs.skip_workflow"
timeout-minutes: 150
defaults:
run:
shell: bash
runs-on: aks-linux-16-cores-32gb
strategy:
fail-fast: false
matrix:
include:
- arch: arm64
android_abi: arm64-v8a
- arch: x64
android_abi: x86_64
# - arch: riscv64 # experimental
# android_abi: riscv64
container:
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_android }}
volumes:
- /mount:/mount
- /home/runner/secrets/:/secrets:ro
options: -e SCCACHE_AZURE_BLOB_CONTAINER
env:
TARGET_BRANCH: ${{ inputs.target-branch || github.base_ref || github.event.merge_group.base_ref || github.ref }}
DEBIAN_FRONTEND: noninteractive # to prevent apt-get from waiting user input
CMAKE_GENERATOR: 'Ninja'
BUILD_TYPE: Release
INSTALL_DIR: android_package
INSTALL_TEST_DIR: android_tests
CMAKE_CXX_COMPILER_LAUNCHER: sccache
CMAKE_C_COMPILER_LAUNCHER: sccache
SCCACHE_IGNORE_SERVER_IO_ERROR: 1
SCCACHE_SERVER_PORT: 35555
SCCACHE_ERROR_LOG: /__w/openvino/sccache_log.txt
SCCACHE_LOG: warn
OPENVINO_REPO: '/__w/openvino/openvino/openvino'
OPENVINO_GENAI_REPO: '/__w/openvino/openvino/openvino.genai'
BUILD_DIR: '/__w/openvino/openvino/build'
ANDROID_TOOLS: '/deps/android_tools'
ANDROID_NDK_HOME: '/deps/android_tools/ndk/29.0.14206865'
ANDROID_SDK_VERSION: 35
ANDROID_ABI_CONFIG: ${{ matrix.android_abi }}
TBB_BRANCH: 'v2022.2.0'
TBB_SRC: "/__w/openvino/openvino/build/onetbb-src"
TBB_BUILD: "/__w/openvino/openvino/build/onetbb-build"
TBB_INSTALL: "/__w/openvino/openvino/build/onetbb-install"
TBB_CMAKE_DIR: "/__w/openvino/openvino/build/onetbb-install/lib/cmake/TBB"
SCCACHE_AZURE_KEY_PREFIX: android_${{ matrix.arch }}
ARTIFACTS_SHARE: "/mount/build-artifacts"
MANIFEST_PATH: '${{ github.workspace }}/openvino/manifest.yml'
PRODUCT_TYPE: public_android_${{ matrix.arch }}_release
steps:
- name: Append the environment variable - load SCCACHE_AZURE_CONNECTION_STRING from file
shell: bash
run: |
SCCACHE_AZURE_CONNECTION_STRING="$(cat /secrets/sccache/connection-string)"
echo "::add-mask::${SCCACHE_AZURE_CONNECTION_STRING}"
echo "SCCACHE_AZURE_CONNECTION_STRING=${SCCACHE_AZURE_CONNECTION_STRING}" >> $GITHUB_ENV
echo "✓ Connection string loaded and masked"
- name: Clone OpenVINO
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
with:
path: 'openvino'
submodules: 'recursive'
- name: Clone OpenVINO GenAI
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
with:
repository: 'openvinotoolkit/openvino.genai'
path: ${{ env.OPENVINO_GENAI_REPO }}
submodules: 'true'
ref: ${{ env.TARGET_BRANCH }}
- name: Generate product manifest and set CI_BUILD_NUMBER & CI_BUILD_DEV_TAG
id: create_manifest
uses: ./openvino/.github/actions/create_manifest
with:
repos: |
${{ env.OPENVINO_REPO }}
product_type: ${{ env.PRODUCT_TYPE }}
target_arch: ${{ matrix.arch }}
build_type: 'release'
save_to: ${{ env.MANIFEST_PATH }}
trigger_repo_branch: ${{ inputs.target-branch }}
#
# Print system info
#
- name: System info
uses: ./openvino/.github/actions/system_info
#
# Build
#
- name: Clean ccache stats
run: ${SCCACHE_PATH} --zero-stats
- name: Clone OneTBB
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
with:
repository: 'oneapi-src/oneTBB'
path: ${{ env.TBB_SRC }}
submodules: 'true'
ref: ${{ env.TBB_BRANCH }}
- name: Configure OneTBB CMake project
run: |
cmake \
-G '${{ env.CMAKE_GENERATOR }}' \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_INSTALL_PREFIX=${{ env.TBB_INSTALL }} \
-DCMAKE_TOOLCHAIN_FILE=${{ env.ANDROID_NDK_HOME }}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{ env.ANDROID_ABI_CONFIG }} \
-DANDROID_PLATFORM=${{ env.ANDROID_SDK_VERSION }} \
-DANDROID_STL=c++_shared \
-DTBB_TEST=OFF \
-DTBB_STRICT=OFF \
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,--undefined-version" \
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
-S ${TBB_SRC} \
-B ${TBB_BUILD}
- name: Build OneTBB project
run: cmake --build ${TBB_BUILD} --parallel $(nproc)
- name: Install OneTBB project
run: cmake --install ${TBB_BUILD}
- name: CMake - configure OpenVINO
run: |
cmake \
-G '${{ env.CMAKE_GENERATOR }}' \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DCMAKE_TOOLCHAIN_FILE=${{ env.ANDROID_NDK_HOME }}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{ env.ANDROID_ABI_CONFIG }} \
-DANDROID_PLATFORM=${{ env.ANDROID_SDK_VERSION }} \
-DANDROID_STL=c++_shared \
-DENABLE_TESTS=ON \
-DCPACK_ARCHIVE_COMPONENT_INSTALL=OFF \
-DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \
-DENABLE_STRICT_DEPENDENCIES=OFF \
-DENABLE_SYSTEM_TBB=OFF \
-DTHREADING=TBB \
-DTBB_DIR=${{ env.TBB_CMAKE_DIR }} \
-DTBBROOT=${{ env.TBB_INSTALL }} \
-DENABLE_FASTER_BUILD=ON \
-DOPENVINO_EXTRA_MODULES=${{ env.OPENVINO_GENAI_REPO }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
-DENABLE_LTO=ON \
-DENABLE_INTEL_CPU=ON \
-DENABLE_INTEL_GPU=ON \
-DENABLE_INTEL_NPU=ON \
-DENABLE_TEMPLATE=ON \
-DENABLE_PYTHON=OFF \
-DENABLE_SAMPLES=OFF \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-z,max-page-size=16384" \
-DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,max-page-size=16384" \
-S ${OPENVINO_REPO} \
-B ${BUILD_DIR}
- name: CMake - build OpenVINO
run: cmake --build ${BUILD_DIR} --parallel $(nproc)
- name: Show ccache stats
run: ${SCCACHE_PATH} --show-stats
#
# Upload build logs and artifacts
#
- name: Upload build logs
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: build_logs_${{ matrix.arch }}
path: ${{ env.SCCACHE_ERROR_LOG }}
if-no-files-found: 'ignore'
- name: Prepare build and test artifacts (split)
run: |
# Prepare directories
mkdir -p ${INSTALL_TEST_DIR}/bin/intel64/Release
mkdir -p ${INSTALL_DIR}/lib
# Install tests into tests dir
cmake --install ${BUILD_DIR} --config ${{ env.BUILD_TYPE }} --prefix ${INSTALL_TEST_DIR} --component tests
# Install runtime into install dir; fallback to full install if component is unavailable
cmake --install ${BUILD_DIR} --config ${{ env.BUILD_TYPE }} --prefix ${INSTALL_DIR} --component core
cmake --install ${BUILD_DIR} --config ${{ env.BUILD_TYPE }} --prefix ${INSTALL_DIR} --component cpu
cmake --install ${BUILD_DIR} --config ${{ env.BUILD_TYPE }} --prefix ${INSTALL_DIR} --component template
# If tests were installed under tests/, move CPU test binaries to expected path
if [ -d "${INSTALL_TEST_DIR}/tests" ]; then
echo "Moving tests from ${INSTALL_TEST_DIR}/tests/ to ${INSTALL_TEST_DIR}/bin/intel64/Release/"
find ${INSTALL_TEST_DIR}/tests -name "*cpu*test*" -type f -exec cp {} ${INSTALL_TEST_DIR}/bin/intel64/Release/ \;
# Copy Template plugin library from tests installation into runtime package so tests can load it
find ${INSTALL_TEST_DIR}/tests -name "libopenvino_template_plugin*.so*" -type f -exec cp {} ${INSTALL_DIR}/runtime/lib/intel64/ \; 2>/dev/null || true
fi
# Add TBB and libc++ shared to runtime package
find ${TBB_INSTALL}/lib -name "*.so*" -type f -exec cp {} ${INSTALL_DIR}/lib/ \; 2>/dev/null || echo "No .so files in TBB_INSTALL/lib"
cp "${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/${{ env.ANDROID_ABI_CONFIG }}-linux-android/libc++_shared.so" ${INSTALL_DIR}/lib/ || echo "libc++_shared.so not found"
- name: Pack openvino_package
run: tar -cvf - * | pigz > ${BUILD_DIR}/openvino_package.tar.gz
working-directory: ${{ env.INSTALL_DIR }}
- name: Pack openvino_tests
run: tar -cvf - * | pigz > ${BUILD_DIR}/openvino_tests.tar.gz
working-directory: ${{ env.INSTALL_TEST_DIR }}
- name: Upload CPU test binaries
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ov_cpu_tests_android_${{ matrix.arch }}
path: ${{ env.INSTALL_TEST_DIR }}/
if-no-files-found: 'error'
- name: Upload OpenVINO runtime package (Android)
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: ov_android_package_${{ matrix.arch }}
path: ${{ env.INSTALL_DIR }}/
if-no-files-found: 'error'
- name: Store artifacts to a shared drive
id: store_artifacts
if: ${{ github.event_name != 'merge_group' }}
uses: ./openvino/.github/actions/store_artifacts
with:
artifacts: |
${{ env.BUILD_DIR }}/openvino_package.tar.gz
${{ env.BUILD_DIR }}/openvino_tests.tar.gz
${{ env.MANIFEST_PATH }}
storage_dir: ${{ env.PRODUCT_TYPE }}
storage_root: ${{ env.ARTIFACTS_SHARE }}
branch_name: ${{ inputs.target-branch }}
CXX_Unit_Tests:
needs: [Smart_CI, Docker, Build]
timeout-minutes: 120
runs-on: aks-linux-4-cores-16gb
container:
image: ${{ fromJSON(needs.docker.outputs.images).ov_test.ubuntu_22_04_android }}
volumes:
- /mount:/mount
options: --device /dev/kvm
env:
ANDROID_API_LEVEL: 30
ANDROID_TARGET: google_apis
ANDROID_ARCH: x86_64
INSTALL_DIR: android_package
INSTALL_TEST_DIR: android_tests
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
- name: Download CPU test binaries
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ov_cpu_tests_android_x64
path: ${{ env.INSTALL_TEST_DIR }}
- name: Download OpenVINO runtime package (Android)
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ov_android_package_x64
path: ${{ env.INSTALL_DIR }}
- name: Setup KVM permissions
run: |
/usr/local/bin/setup-kvm.sh || true
ls -la /dev/kvm || echo "KVM device not available"
- name: Set up Java 17
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407 # v3.2.2
- name: AVD cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: avd-cache
if: github.ref_name == 'master'
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ env.ANDROID_API_LEVEL }}-${{ env.ANDROID_TARGET }}-${{ env.ANDROID_ARCH }}
- name: Run CPU unit tests on emulator
id: unit-tests
uses: reactivecircus/android-emulator-runner@1dcd0090116d15e7c562f8db72807de5e036a4ed # v2.34.0
with:
api-level: ${{ env.ANDROID_API_LEVEL }}
target: ${{ env.ANDROID_TARGET }}
arch: ${{ env.ANDROID_ARCH }}
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -memory 4096 -partition-size 8192 -qemu -cpu host
disable-animations: true
emulator-boot-timeout: 900
script: |
set -e
adb wait-for-device
[ -f "${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_unit_tests" ] || { echo "Error: ov_cpu_unit_tests binary not found"; exit 1; }
chmod +x ${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_unit_tests
adb shell "rm -rf /data/local/tmp/ov_test && mkdir -p /data/local/tmp/ov_test/intel64/Release"
echo "Pushing unit test binary and libraries to device..."
adb push ${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_unit_tests /data/local/tmp/ov_test/intel64/Release/ov_cpu_unit_tests
# Push OpenVINO libraries from runtime package
for lib in ${INSTALL_DIR}/runtime/lib/intel64/*.so*; do [ -f "$lib" ] && adb push "$lib" /data/local/tmp/ov_test/; done
for lib in ${INSTALL_DIR}/lib/*.so*; do [ -f "$lib" ] && adb push "$lib" /data/local/tmp/ov_test/; done
adb shell "chmod 755 /data/local/tmp/ov_test/intel64/Release/ov_cpu_unit_tests"
echo "Running CPU unit tests..."
adb shell "cd /data/local/tmp/ov_test && export LD_LIBRARY_PATH=/data/local/tmp/ov_test:$LD_LIBRARY_PATH && timeout 1800 ./intel64/Release/ov_cpu_unit_tests --gtest_output=xml:/data/local/tmp/ov_test/unit_test_results.xml" || { echo "Unit test execution failed"; adb shell "ls -la /data/local/tmp/ov_test/"; exit 1; }
echo "Pulling unit test results..."
adb pull /data/local/tmp/ov_test/unit_test_results.xml ./unit_test_results.xml || { echo "Warning: Could not pull unit test results"; adb shell "ls -la /data/local/tmp/ov_test/"; adb shell "cat /data/local/tmp/ov_test/unit_test_results.xml" || echo "No unit test results file"; }
- name: Upload unit test results
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: cpu_unit_tests_results_android_x64
path: ./unit_test_results.xml
if-no-files-found: 'ignore'
CXX_Func_Tests:
needs: [Smart_CI, Docker, Build]
timeout-minutes: 20
runs-on: aks-linux-4-cores-16gb
container:
image: ${{ fromJSON(needs.docker.outputs.images).ov_test.ubuntu_22_04_android }}
volumes:
- /mount:/mount
options: --device /dev/kvm
env:
ANDROID_API_LEVEL: 30
ANDROID_TARGET: google_apis
ANDROID_ARCH: x86_64
INSTALL_DIR: android_package
INSTALL_TEST_DIR: android_tests
GTEST_FILTER: '*EltwiseLayer*'
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
timeout-minutes: 15
- name: Download CPU test binaries
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ov_cpu_tests_android_x64
path: ${{ env.INSTALL_TEST_DIR }}
- name: Download OpenVINO runtime package (Android)
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
with:
name: ov_android_package_x64
path: ${{ env.INSTALL_DIR }}
- name: Setup KVM permissions
run: |
/usr/local/bin/setup-kvm.sh || true
ls -la /dev/kvm || echo "KVM device not available"
- name: Set up Java 17
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK
uses: android-actions/setup-android@9fc6c4e9069bf8d3d10b2204b1fb8f6ef7065407 # v3.2.2
- name: AVD cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: avd-cache
if: github.ref_name == 'master'
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ env.ANDROID_API_LEVEL }}-${{ env.ANDROID_TARGET }}-${{ env.ANDROID_ARCH }}
- name: Run CPU func tests on emulator
id: func-tests
uses: reactivecircus/android-emulator-runner@1dcd0090116d15e7c562f8db72807de5e036a4ed # v2.34.0
with:
api-level: ${{ env.ANDROID_API_LEVEL }}
target: ${{ env.ANDROID_TARGET }}
arch: ${{ env.ANDROID_ARCH }}
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -memory 4096 -partition-size 8192 -qemu -cpu host
disable-animations: true
emulator-boot-timeout: 900
script: |
set -e
adb wait-for-device
[ -f "${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_func_tests" ] || { echo "Error: ov_cpu_func_tests binary not found"; exit 1; }
chmod +x ${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_func_tests
adb shell "rm -rf /data/local/tmp/ov_test_func && mkdir -p /data/local/tmp/ov_test_func/intel64/Release"
echo "Pushing functional test binary and libraries to device..."
adb push ${INSTALL_TEST_DIR}/bin/intel64/Release/ov_cpu_func_tests /data/local/tmp/ov_test_func/intel64/Release/ov_cpu_func_tests
# Push OpenVINO libraries from runtime package
for lib in ${INSTALL_DIR}/runtime/lib/intel64/*.so*; do [ -f "$lib" ] && adb push "$lib" /data/local/tmp/ov_test_func/intel64/Release; done
for lib in ${INSTALL_DIR}/lib/*.so*; do [ -f "$lib" ] && adb push "$lib" /data/local/tmp/ov_test_func/intel64/Release; done
adb shell "chmod 755 /data/local/tmp/ov_test_func/intel64/Release/ov_cpu_func_tests"
echo "Running CPU functional tests..."
adb shell "cd /data/local/tmp/ov_test_func && export LD_LIBRARY_PATH=/data/local/tmp/ov_test_func/intel64/Release:$LD_LIBRARY_PATH && timeout 3600 ./intel64/Release/ov_cpu_func_tests --gtest_filter=${{ env.GTEST_FILTER }} --gtest_output=xml:/data/local/tmp/ov_test_func/intel64/Release/func_test_results.xml" || { echo "Functional test execution failed"; adb shell "ls -la /data/local/tmp/ov_test_func/intel64/Release/"; exit 1; }
echo "Pulling functional test results..."
adb pull /data/local/tmp/ov_test_func/intel64/Release/func_test_results.xml ./func_test_results.xml || { echo "Warning: Could not pull functional test results"; adb shell "ls -la /data/local/tmp/ov_test_func/intel64/Release/"; adb shell "cat /data/local/tmp/ov_test_func/intel64/Release/func_test_results.xml" || echo "No functional test results file"; }
- name: Upload functional test results
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
with:
name: cpu_func_tests_results_android_x64
path: ./func_test_results.xml
if-no-files-found: 'ignore'
Overall_Status:
name: ci/gha_overall_status_android
needs: [Smart_CI, Build, CXX_Unit_Tests, CXX_Func_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