From f85849ea5829824713216947d1949b33a969d8f4 Mon Sep 17 00:00:00 2001 From: MyungJoo Ham Date: Wed, 12 Jun 2024 15:36:56 +0900 Subject: [PATCH] action: add Android build test Android is the major release target of nntrainer. Build and run test cases for Android. Signed-off-by: MyungJoo Ham --- .github/workflows/android.yml | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/android.yml diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000000..1642a83b80 --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,55 @@ +name: Build test/ Android NDK r12b + +on: + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-22.04 + name: Android NDK build on Ubuntu for arm64-v8a + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: -${{ github.event.pull_request.commits }} + - name: Check if rebuild required + uses: ./.github/actions/check-rebuild + with: + mode: android + - if: env.rebuild == '1' + uses: nttld/setup-ndk@v1 + with: + ndk-version: r21d + link-to-sdk: true + ## @todo Make cache works (daily update cache on main branch / restore the cache on each PR (w/o saving)) + - name: Prepare Build + if: env.rebuild == '1' + run: | + echo "::group::Install required packages" + sudo apt-get update + sudo apt-get install tar wget gzip libglib2.0-dev libjson-glib-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libunwind-dev googletest liborc-0.4-dev flex bison libopencv-dev pkg-config python3-dev python3-numpy python3 meson ninja-build + echo "::endgroup::" + - name: NDK Build + if: env.rebuild == '1' + run: | + echo "::group::Run package_android.sh" + ./tools/package_android.sh + echo "::endgroup::" + echo "::group::Meson build" + meson build -Dplatform=android + ninja -C build + echo "::endgroup::" + echo "::group::NDK build" + pushd build/jni + ndk-build NDK_PROJECT_PATH=./ APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk + popd + echo "::endgroup::" + - name: Android NNTrainer Application Build + if: env.rebuild == '1' + run: | + echo "::group::LogisticRegression" + pushd Applications/LogisticRegression/jni + ndk-build NDK_PROJECT_PATH=./ APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk + popd + echo "::endgroup::"