CI: modify ubuntu #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: android | |
on: [push] | |
jobs: | |
use_install_qt: | |
name: use install qt android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}} | |
strategy: | |
matrix: | |
BUILD_TYPE: [Release] | |
ANDROID_ABI: [armeabi-v7a, x86] | |
ANDROID_PLATFORM: [android-28] | |
os: [Ubuntu-20.04] | |
qt_version: [lOpenCV] | |
include: | |
- VCPKG_TARGET_TRIPLET: arm-android | |
qt_version: lOpenCV | |
qt_arch: android_armv7 | |
ANDROID_ABI: armeabi-v7a | |
qt_modules: 'qtscxml qtmultimedia qtwebview qtimageformats' | |
runs-on: ${{ matrix.os }} | |
env: | |
SOURCE_DIR: ${{github.workspace}}/.cache/source | |
TOOSL_DIR: ${{github.workspace}}/.cache/tools | |
INSTALL_DIR: ${{github.workspace}}/.cache/install | |
FaceRecognizer_VERSION: v0.0.4 | |
VCPKGGITCOMMITID: 6adca01a3fadca0cc0b80f03ec57c7c3a0be5c02 | |
qt_modules: '${{matrix.qt_modules}}' | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- uses: snickerbockers/submodules-init@v4 | |
- name: make directory | |
run: | | |
cmake -E make_directory ${{env.SOURCE_DIR}} | |
cmake -E make_directory ${{env.TOOSL_DIR}} | |
cmake -E make_directory ${{env.INSTALL_DIR}} | |
- name: Cache Qt | |
id: cache-qt | |
uses: actions/cache@v1 # not v2! | |
with: | |
path: ${{env.TOOSL_DIR}}/qt | |
key: qt_${{matrix.qt_version}}_${{matrix.qt_arch}} | |
- name: Install Qt | |
# You may pin to the exact commit or the version. | |
# uses: jurplel/install-qt-action@a962fb91949c8e846a3e4a944d50e7ef5cc3a28a | |
uses: jurplel/install-qt-action@v3 | |
with: | |
# Directory to install Qt | |
dir: '${{env.TOOSL_DIR}}/qt' # optional | |
# Version of Qt to install | |
version: '${{matrix.qt_version}}' # optional, default is 5.15.2 | |
# Host platform | |
#host: linux # optional | |
# Target platform for build | |
target: 'android' # optional, default is desktop | |
# Architecture for Windows/Android | |
arch: '${{matrix.qt_arch}}' # optional | |
# Whether or not to install Qt dependencies on Linux | |
#install-deps: true # optional, default is true | |
# Additional Qt modules to install | |
modules: '${{env.qt_modules}}' # optional | |
# Force a Qt mirror in case the default is not working | |
#mirror: # optional | |
# Whether or not to actually download Qt | |
cached: '${{ steps.cache-qt.outputs.cache-hit }}' # optional, default is false | |
# Whether or not to automatically run setup-python to find a valid python version. | |
#setup-python: false # optional, default is true | |
# Qt tools to download--specify comma-separated argument lists which are themselves separated by spaces: <tool_name>,<tool_version>,<tool_arch> | |
#tools: # optional | |
# Whether or not to actually install Qt or just the tools from the tools argument | |
#tools-only: false # optional, default is false | |
# Version of aqtinstall to use in case of issues | |
#aqtversion: # optional, default is ==0.10.0 | |
# Version of py7zr to use in case of issues | |
#py7zrversion: # optional, default is ==0.11.0 | |
# Any extra arguments to append to the back | |
#extra: # optional | |
- name: run-vcpkg | |
uses: lukka/[email protected] | |
with: | |
# Indicates whether to only setup vcpkg (i.e. installing it and setting the environment variables VCPKG_ROOT, RUNVCPK_VCPKG_ROOT), without installing any port. | |
#setupOnly: # optional | |
#vcpkgGitURL: https://github.com/KangLin/vcpkg.git | |
vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}} | |
vcpkgDirectory: ${{ runner.workspace }}/vcpkg/ | |
# Since the cache must be invalidated when content of the vcpkg.json file changes, let's | |
# compute its hash and append this to the computed cache's key. | |
appendedCacheKey: android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}-${{env.VCPKGGITCOMMITID}} | |
additionalCachedPaths: $VCPKG_ROOT/installed | |
vcpkgTriplet: '${{ matrix.VCPKG_TARGET_TRIPLET }}' | |
vcpkgArguments: 'zlib openssl libpng libjpeg-turbo libdatachannel' | |
- name: Cache installed | |
uses: actions/cache@v2 | |
id: cache-installed | |
with: | |
path: | | |
${{env.INSTALL_DIR}} | |
key: cache-installed-android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}} | |
- name: Build libvncserver | |
working-directory: ${{env.SOURCE_DIR}} | |
run: | | |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer ]; then | |
git clone https://github.com/KangLin/libvncserver.git | |
cd libvncserver | |
#git checkout -b 5deb43e2837e05e5e24bd2bfb458ae6ba930bdaa 5deb43e2837e05e5e24bd2bfb458ae6ba930bdaa | |
cmake -E make_directory build | |
cd build | |
cmake .. \ | |
-DWITH_OPENSSL=ON -DWITH_GCRYPT=OFF \ | |
-DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | |
-DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | |
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ | |
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \ | |
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} | |
cmake --build . --config ${{ matrix.BUILD_TYPE }} | |
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install/strip | |
fi | |
# - name: build FreeRDP | |
# working-directory: ${{env.SOURCE_DIR}} | |
# run: | | |
# if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/FreeRDP2 ]; then | |
# git clone -b 2.5.0 https://github.com/FreeRDP/FreeRDP.git | |
# cd FreeRDP | |
# git submodule update --init --recursive | |
# cmake -E make_directory build | |
# cd build | |
# cmake .. \ | |
# -DOpenSSL_ROOT_DIR=${{env.RUNVCPKG_VCPKG_ROOT}}/installed/${{env.RUNVCPKG_VCPKG_TRIPLET_OUT}} \ | |
# -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | |
# -DCMAKE_INSTALL_PREFIX="${{env.INSTALL_DIR}}" \ | |
# -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | |
# -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ | |
# -DANDROID_ABI=${{matrix.ANDROID_ABI}} \ | |
# -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} | |
# cmake --build . --config ${{matrix.BUILD_TYPE}} | |
# cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip | |
# fi | |
# - name: build tigervnc | |
# working-directory: ${{env.SOURCE_DIR}} | |
# run: | | |
# if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/tigervnc ]; then | |
# git clone https://github.com/KangLin/tigervnc.git | |
# cd ${{env.SOURCE_DIR}}/tigervnc | |
# cmake -E make_directory build | |
# cd build | |
# cmake .. \ | |
# -DBUILD_TESTS=OFF -DBUILD_VIEWER=OFF \ | |
# -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | |
# -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" \ | |
# -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | |
# -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ | |
# -DANDROID_ABI=${{matrix.ANDROID_ABI}} \ | |
# -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} | |
# cmake --build . --config ${{ matrix.BUILD_TYPE }} | |
# cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install/strip | |
# fi | |
- name: build log4qt | |
working-directory: ${{env.SOURCE_DIR}} | |
env: | |
QT_ROOT: ${{env.Qt5_Dir}} | |
run: | | |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/Log4Qt ]; then | |
git clone -b v1.5.1 "https://github.com/MEONMedical/Log4Qt.git" | |
cd Log4Qt | |
cmake -E make_directory build | |
cd build | |
cmake .. -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | |
-DLOG4QT_ENABLE_EXAMPLES=OFF \ | |
-DLOG4QT_ENABLE_TESTS=OFF \ | |
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \ | |
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \ | |
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \ | |
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \ | |
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \ | |
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | |
-DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \ | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | |
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ | |
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \ | |
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} | |
cmake --build . --config ${{matrix.BUILD_TYPE}} | |
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip | |
fi | |
- name: build qxmpp | |
working-directory: ${{env.SOURCE_DIR}} | |
env: | |
QT_ROOT: ${{env.Qt5_Dir}} | |
run: | | |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/qxmpp ]; then | |
git clone -b v1.2.1 "https://github.com/qxmpp-project/qxmpp.git" | |
cd qxmpp | |
cmake -E make_directory build | |
cd build | |
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF \ | |
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | |
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \ | |
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \ | |
-DQt5Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Gui \ | |
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \ | |
-DQt5Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Xml \ | |
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \ | |
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | |
-DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \ | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | |
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ | |
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \ | |
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} | |
cmake --build . --config ${{matrix.BUILD_TYPE}} | |
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip | |
fi | |
- name: git clone RabbitCommon | |
working-directory: ${{env.SOURCE_DIR}} | |
run: git clone https://github.com/KangLin/RabbitCommon.git | |
- name: build RabbitRemoteControl | |
env: | |
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon | |
QT_ROOT: ${{env.Qt5_Dir}} | |
STOREPASS: ${{secrets.STOREPASS}} | |
run: | | |
cmake -E make_directory ${{github.workspace}}/build | |
cd ${{github.workspace}}/build | |
cmake ${{github.workspace}} \ | |
-DCMARK_SHARED=OFF \ | |
-DCMARK_TESTS=OFF \ | |
-DCMARK_STATIC=ON \ | |
-DBUILD_FREERDP=ON \ | |
-DLog4Qt_DIR=${{env.INSTALL_DIR}}/lib/cmake/Log4Qt \ | |
-DLibVNCServer_DIR="${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer" \ | |
-Dtigervnc_DIR=${{env.INSTALL_DIR}}/lib/cmake \ | |
-DQXmpp_DIR=${{env.INSTALL_DIR}}/lib/cmake/qxmpp \ | |
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | |
-DQT_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \ | |
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \ | |
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \ | |
-DQt5Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Gui \ | |
-DQt5Widgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Widgets \ | |
-DQt5Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Xml \ | |
-DQt5Sql_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Sql \ | |
-DQt5Positioning_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Positioning \ | |
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \ | |
-DQt5Multimedia_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Multimedia \ | |
-DQt5LinguistTools_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5LinguistTools \ | |
-DQt5Qml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Qml \ | |
-DQt5Quick_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Quick \ | |
-DQt5QuickWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5QuickWidgets \ | |
-DQt5AndroidExtras_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5AndroidExtras \ | |
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \ | |
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \ | |
-DQt5WebEngineWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5WebEngineWidgets \ | |
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | |
-DCMAKE_PREFIX_PATH="${{env.QT_ROOT}}:${{env.INSTALL_DIR}}" \ | |
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | |
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ | |
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \ | |
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} | |
cmake --build . --config ${{ matrix.BUILD_TYPE }} | |
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install-runtime | |
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target APK | |
- name: Package | |
if: ${{matrix.BUILD_TYPE == 'Release'}} | |
working-directory: ${{env.INSTALL_DIR}} | |
env: | |
QT_ROOT: ${{env.Qt5_Dir}} | |
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon | |
run: | | |
APK_FILE=`find . -name "install-release-signed.apk"` | |
APK_NAME=FaceRecognizer_${{matrix.ANDROID_ABI}}_${FaceRecognizer_VERSION}.apk | |
mv -f ${APK_FILE} ${APK_NAME} | |
APK_FILE=${APK_NAME} | |
cp ${{github.workspace}}/Update/update_android.xml . | |
md5sum ${APK_FILE} > ${APK_FILE}.md5 | |
MD5=`cat ${APK_FILE}.md5 | awk '{print $1}'` | |
echo "MD5:${MD5}" | |
sed -i "s/<VERSION>.*</<VERSION>${FaceRecognizer_VERSION}</g" update_android.xml | |
sed -i "s/<INFO>.*</<INFO>Release rabbit remote control ${FaceRecognizer_VERSION}</g" update_android.xml | |
sed -i "s/<TIME>.*</<TIME>`date`</g" update_android.xml | |
sed -i "s/<ARCHITECTURE>.*</<ARCHITECTURE>${BUILD_ARCH}</g" update_android.xml | |
sed -i "s/<MD5SUM>.*</<MD5SUM>${MD5}</g" update_android.xml | |
sed -i "s/<FILENAME>.*</<FILENAME>${APK_NAME}</g" update_android.xml | |
sed -i "s:<URL>.*<:<URL>https\://github.com/KangLin/RabbitRemoteControl/releases/download/${FaceRecognizer_VERSION}/${APK_NAME}<:g" update_android.xml | |
sed -i "s/<MIN_UPDATE_VERSION>.*</<MIN_UPDATE_VERSION>${FaceRecognizer_VERSION}</g" update_android.xml | |
- name: update | |
if: ${{ matrix.BUILD_TYPE == 'Release' }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: FaceRecognizer_Android_${{matrix.ANDROID_ABI}}_${{env.FaceRecognizer_VERSION}} | |
path: | | |
${{env.INSTALL_DIR}}/FaceRecognizer_${{matrix.ANDROID_ABI}}_${{env.FaceRecognizer_VERSION}}.apk | |
- name: Upload To Github Release | |
if: ${{matrix.ANDROID_ABI=='armeabi-v7a' && matrix.BUILD_TYPE == 'Release' && startsWith(github.ref, 'refs/tags/') }} | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
prerelease: true | |
# body: | | |
# [:cn: 修改日志](ChangeLog_zh_CN.md) [:cn: 说明](README_zh_CN.md) | |
# [:us: Change log](ChangeLog.md) [:us: README](README.md) | |
files: | | |
${{env.INSTALL_DIR}}/FaceRecognizer_${{matrix.ANDROID_ABI}}_${{env.FaceRecognizer_VERSION}}.apk | |
${{env.INSTALL_DIR}}/FaceRecognizer_${{matrix.ANDROID_ABI}}_${{env.FaceRecognizer_VERSION}}.apk.md5 | |
${{env.INSTALL_DIR}}/update_android.xml |