Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Actions] Add android daily build #554

Merged
merged 1 commit into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/actions/android-build/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Android build collections
description:

inputs:
abi:
description: target ABI
required: false
default: arm64-v8a

runs:
using: composite
steps:
- name: Prepare NDK
uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r25c
link-to-sdk: true
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Get gstreamer-android
run: |
mkdir -p ~/android/gst_root_android/
pushd ~/android/gst_root_android/
wget https://gstreamer.freedesktop.org/data/pkg/android/1.24.0/gstreamer-1.0-android-universal-1.24.0.tar.xz
tar -xf gstreamer-1.0-android-universal-1.24.0.tar.xz
popd
shell: bash
- name: Get nnstreamer
uses: actions/checkout@v4
with:
repository: nnstreamer/nnstreamer
path: nnstreamer
- name: Get nnstreamer-edge
uses: actions/checkout@v4
with:
repository: nnstreamer/nnstreamer-edge
path: nnstreamer-edge
- name: Get nnstreamer-android-resource
uses: actions/checkout@v4
with:
repository: nnstreamer/nnstreamer-android-resource
path: nnstreamer-android-resource
- name: NDK build
run: |
echo "NDK build, ${{ github.workspace }}"
export GSTREAMER_ROOT_ANDROID=~/android/gst_root_android/
export NNSTREAMER_ROOT=${{ github.workspace }}/nnstreamer
export NNSTREAMER_EDGE_ROOT=${{ github.workspace }}/nnstreamer-edge
export NNSTREAMER_ANDROID_RESOURCE=${{ github.workspace }}/nnstreamer-android-resource
export ML_API_ROOT=${{ github.workspace }}
if [ $TARGET_ABI == 'arm64-v8a' ]; then
bash ${{ github.workspace }}/java/build-nnstreamer-android.sh --target_abi=$TARGET_ABI
elif [ $TARGET_ABI == 'x86_64' ]; then
bash ${{ github.workspace }}/java/build-nnstreamer-android.sh --target_abi=$TARGET_ABI --enable_nnfw=no
else
bash ${{ github.workspace }}/java/build-nnstreamer-android.sh --target_abi=$TARGET_ABI --enable_nnfw=no --enable_tflite=no
fi

result=$?
if [[ ${result} -ne 0 ]]; then
echo "NDK build failed"
exit 1
fi
shell: bash
env:
TARGET_ABI: ${{ inputs.abi }}
64 changes: 8 additions & 56 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -1,77 +1,29 @@
name: Android Build Test

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

# Allow manually triggering the workflow
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-22.04
strategy:
matrix:
abi: ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64']
steps:
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r25c
link-to-sdk: true
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
- name: Get gstreamer-android
run: |
mkdir -p ~/android/gst_root_android/
pushd ~/android/gst_root_android/
wget https://gstreamer.freedesktop.org/data/pkg/android/1.24.0/gstreamer-1.0-android-universal-1.24.0.tar.xz
tar -xf gstreamer-1.0-android-universal-1.24.0.tar.xz
popd
- name: Get nnstreamer
uses: actions/checkout@v4
with:
repository: nnstreamer/nnstreamer
path: nnstreamer
- name: Get nnstreamer-edge
uses: actions/checkout@v4
with:
repository: nnstreamer/nnstreamer-edge
path: nnstreamer-edge
- name: Get nnstreamer-android-resource
uses: actions/checkout@v4
with:
repository: nnstreamer/nnstreamer-android-resource
path: nnstreamer-android-resource
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: -${{ github.event.pull_request.commits }}
path: api
- name: NDK build
run: |
export GSTREAMER_ROOT_ANDROID=~/android/gst_root_android/
export NNSTREAMER_ROOT=${{ github.workspace }}/nnstreamer
export NNSTREAMER_EDGE_ROOT=${{ github.workspace }}/nnstreamer-edge
export NNSTREAMER_ANDROID_RESOURCE=${{ github.workspace }}/nnstreamer-android-resource
export ML_API_ROOT=${{ github.workspace }}/api
if [ ${{ matrix.abi }} == 'arm64-v8a' ]; then
bash ${{ github.workspace }}/api/java/build-nnstreamer-android.sh --target_abi=${{ matrix.abi }}
elif [ ${{ matrix.abi }} == 'x86_64' ]; then
bash ${{ github.workspace }}/api/java/build-nnstreamer-android.sh --target_abi=${{ matrix.abi }} --enable_nnfw=no
else
bash ${{ github.workspace }}/api/java/build-nnstreamer-android.sh --target_abi=${{ matrix.abi }} --enable_nnfw=no --enable_tflite=no
fi

result=$?
if [[ ${result} -ne 0 ]]; then
echo "NDK build failed"
exit 1
fi
- name: Prepare Android build
uses: ./.github/actions/android-build
with:
abi: ${{ matrix.abi }}
- name: Upload android library
uses: actions/upload-artifact@v4
with:
name: android_lib_${{ matrix.abi }}
path: ${{ github.workspace }}/api/android_lib
path: ${{ github.workspace }}/android_lib
38 changes: 38 additions & 0 deletions .github/workflows/daily-build-android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Android daily build and publish docs

on:
schedule:
# 05:00 AM (KST) Mon-Fri
- cron: "00 20 * * 0-4"
# Allow manually triggering the workflow
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-22.04
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: true
steps:
- uses: actions/checkout@v4
- name: Prepare Android build
uses: ./.github/actions/android-build
- name: get date
id: get-date
run: |
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Release daily build result
run: |
aws s3 cp --recursive --region ap-northeast-2 ${{ github.workspace }}/android_lib/ s3://nnstreamer-release/nnstreamer/${{ steps.get-date.outputs.date }}/android/
aws s3 rm s3://nnstreamer-release/nnstreamer/latest/android/
aws s3 cp --recursive --region ap-northeast-2 ${{ github.workspace }}/android_lib/ s3://nnstreamer-release/nnstreamer/latest/android/
- name: Publish javadoc
run: |
echo "Publish javadoc, ${{ github.workspace }}"
mkdir ~/javadoc_dir
sed -i "s|@BUILD_ANDROID@|//|" ${{ github.workspace }}/java/android/nnstreamer/src/main/java/org/nnsuite/nnstreamer/*.java
javadoc -d ~/javadoc_dir -public -splitindex -Xdoclint:none --ignore-source-errors java/android/nnstreamer/src/main/java/org/nnsuite/nnstreamer/*
aws s3 cp --recursive --region ap-northeast-2 ~/javadoc_dir/ s3://nnstreamer-release/nnstreamer/${{ steps.get-date.outputs.date }}/java_html/
aws s3 rm s3://nnstreamer-release/nnstreamer/latest/java_html/
aws s3 cp --recursive --region ap-northeast-2 ~/javadoc_dir/ s3://nnstreamer-release/nnstreamer/latest/java_html/
Loading