-
Notifications
You must be signed in to change notification settings - Fork 19
136 lines (132 loc) · 6.83 KB
/
OCV-PR-5.x-Android.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: OCV PR:5.x AndroidSDK
on:
pull_request:
branches:
- main
paths:
- '.github/workflows/OCV-PR-5.x-Android.yaml'
workflow_call:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
concurrency:
group: OCV-PR-5.x-Android-${{ github.ref }}
cancel-in-progress: true
env:
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
PR_AUTHOR_FORK: ${{ github.event.pull_request.head.repo.full_name }}
SOURCE_BRANCH_NAME: ${{ github.head_ref }}
TARGET_BRANCH_NAME: ${{ github.base_ref }}
GIT_CACHE_DOCKER: '/home/ci/git_cache'
OPENCV_DOCKER_WORKDIR: '/home/ci/opencv'
CCACHE_DIR: '/home/ci/.ccache'
OPENCV_DOWNLOAD_PATH: '/home/ci/binaries_cache'
OPENCV_GRADLE_VERBOSE_OPTIONS: '--offline -i'
jobs:
BuildAndTest:
runs-on: opencv-cn-lin-x86-64-android
defaults:
run:
shell: bash
container:
image: quay.io/opencv-ci/opencv-androidsdk-34:20240917
volumes:
- /home/opencv-cn/git_cache:/home/ci/git_cache
- /home/opencv-cn/ci_cache/opencv:/home/ci/.ccache
- /home/opencv-cn/gradle_cache:/home/ci/.gradle
- /home/opencv-cn/binaries_cache:/home/ci/binaries_cache
steps:
- name: Brief system information
timeout-minutes: 60
run: bash ${{ env.GIT_CACHE_DOCKER }}/print_system_information.sh
- name: Define proper HOME path
timeout-minutes: 60
run: echo "HOME=/home/ci" >> $GITHUB_ENV
- name: Setup environment
timeout-minutes: 60
run: |
if [[ "${{ github.event.repository.name }}" == "ci-gha-workflow" || "${{ github.event_name }}" == "schedule" ]]; then
echo "TARGET_BRANCH_NAME=5.x" >> $GITHUB_ENV
else
echo "BUILD_PRECOMMIT=1" >> $GITHUB_ENV
fi
- name: PR info
timeout-minutes: 60
run: |
echo "PR Author: ${{ env.PR_AUTHOR }}"
echo "PR Author fork: ${{ env.PR_AUTHOR_FORK }}"
echo "Source branch name: ${{ env.SOURCE_BRANCH_NAME }}"
echo "Target branch name: ${{ env.TARGET_BRANCH_NAME }}"
- name: Clean
timeout-minutes: 60
run: (test -d "${{ env.OPENCV_DOCKER_WORKDIR }}" && find "${{ env.OPENCV_DOCKER_WORKDIR }}" -mindepth 1 -delete) || /bin/true
- name: Fetch opencv
timeout-minutes: 60
run: git clone --branch ${{ env.TARGET_BRANCH_NAME }} --reference ${{ env.GIT_CACHE_DOCKER }}/opencv.git https://github.com/opencv/opencv.git ${{ env.OPENCV_DOCKER_WORKDIR }}
- name: Merge opencv with ${{ env.SOURCE_BRANCH_NAME }} branch
timeout-minutes: 60
if: ${{ startsWith(github.event.repository.name, 'opencv') && github.event_name == 'pull_request' }}
run: |
cd ${{ env.OPENCV_DOCKER_WORKDIR }}
git pull -v "https://github.com/${{ env.PR_AUTHOR_FORK }}" "${{ env.SOURCE_BRANCH_NAME }}"
- name: Build OpenCV for Android SDK
timeout-minutes: 180
run: |
mkdir -p /home/ci/build
cd /home/ci/build
sed -i 's+https\\://services.gradle.org/distributions/gradle-@[email protected]+file\\:/opt/gradle/gradle-@[email protected]+g' ${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties.in
python3 "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build_sdk.py" --build_doc --config "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/default.config.py" --sdk_path "$ANDROID_HOME" --ndk_path "$ANDROID_NDK_HOME" /home/ci/build | tee /home/ci/build/build-log.txt
- name: Warning check
timeout-minutes: 60
run: cd /home/ci/build && python3 /home/ci/scripts/warnings-handling.py
- name: Build local repo from SDK
timeout-minutes: 60
run: cd /home/ci/build && "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build_aar.sh" OpenCV-android-sdk
- name: Build AAR
timeout-minutes: 60
run: |
cd /home/ci/build
sed -i 's+https\\://services.gradle.org/distributions/gradle-8.11.1-bin.zip+file\\:/opt/gradle/gradle-8.11.1-bin.zip+g' ${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/aar-template/gradle/wrapper/gradle-wrapper.properties
python3 "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build_java_shared_aar.py" --ndk_location="$ANDROID_NDK_HOME" --cmake_location=$(dirname $(dirname $(which cmake))) /home/ci/build/OpenCV-android-sdk
- name: Build Static AAR
timeout-minutes: 60
run: |
cd /home/ci/build
sed -i 's+https\\://services.gradle.org/distributions/gradle-8.11.1-bin.zip+file\\:/opt/gradle/gradle-8.11.1-bin.zip+g' ${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/aar-template/gradle/wrapper/gradle-wrapper.properties
python3 "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build_static_aar.py" --ndk_location="$ANDROID_NDK_HOME" --cmake_location=$(dirname $(dirname $(which cmake))) /home/ci/build/OpenCV-android-sdk
- name: Test CMake
timeout-minutes: 60
run: cd /home/ci/build && python3 "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build-tests/test_cmake_build.py" --sdk_path "$ANDROID_HOME" --ndk_path "$ANDROID_NDK_HOME" OpenCV-android-sdk/sdk/native/jni
- name: Test Gradle for Local SDK
timeout-minutes: 60
run: cd /home/ci/build && "${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build-tests/test_gradle.sh" OpenCV-android-sdk
- name: Test Gradle for AAR from Py Script
timeout-minutes: 60
run: |
cd /home/ci/build
"${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build-tests/test_gradle_aar.sh" OpenCV-android-sdk /home/ci/build/outputs/maven_repo
- name: Test Gradle for AAR from SDK
timeout-minutes: 60
run: |
cd /home/ci/build
"${{ env.OPENCV_DOCKER_WORKDIR }}/platforms/android/build-tests/test_gradle_aar.sh" OpenCV-android-sdk /home/ci/build/outputs/maven_repo
- name: Create Packages
timeout-minutes: 60
run: |
cd /home/ci/build
# revert hacked Gradle URL to the original one
sed -i 's+file\\:/opt/gradle/gradle-8.11.1-bin.zip+https\\://services.gradle.org/distributions/gradle-8.11.1-bin.zip+g' OpenCV-android-sdk/samples/gradle/wrapper/gradle-wrapper.properties
zip -r -9 -y OpenCV4Android.zip OpenCV-android-sdk
zip -r -9 -y sdk-maven-repo.zip maven_repo
cd /home/ci/build/outputs
zip -r -9 -y python-maven-repo.zip maven_repo
- name: Release Package
timeout-minutes: 60
uses: actions/upload-artifact@v4
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || env.RUNNER_DEBUG == 1 }}
with:
name: OpenCV4AndroidSDK
path: |
/home/ci/build/OpenCV4Android.zip
/home/ci/build/sdk-maven-repo.zip
/home/ci/build/outputs/python-maven-repo.zip