Skip to content

Commit

Permalink
CI: Add Android MacOS Workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
HTRamsey committed Apr 28, 2024
1 parent 0eb1e9d commit df42735
Showing 1 changed file with 147 additions and 0 deletions.
147 changes: 147 additions & 0 deletions .github/workflows/android-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
name: Android-MacOS

on:
workflow_dispatch:

jobs:
build:
runs-on: macos-13

strategy:
matrix:
BuildType: [Debug, Release]

defaults:
run:
shell: bash

env:
ARTIFACT: QGroundControl.apk
QT_VERSION: 6.6.3
QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore
QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore
QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
QT_ANDROID_ABIS: "armeabi-v7a;arm64-v8a"

steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
fetch-tags: true

- name: Setup Java Environment
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17

- uses: actions/checkout@v4
with:
repository: jurplel/install-qt-action
ref: master
path: install-qt-action

- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: install-qt-action/action/

- name: Build jurplel/install-qt-action
run: |
cd install-qt-action/action/
npm ci || npm install
npm run build
- name: Install Qt6 for MacOS
uses: ./install-qt-action/action/
with:
version: ${{ env.QT_VERSION }}
host: mac
target: desktop
dir: ${{ runner.temp }}
modules: qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d
cache: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}
tools: 'tools_cmake'

- name: Install Qt6 for Android (armv7)
uses: ./install-qt-action/action/
if: contains( env.QT_ANDROID_ABIS, 'armeabi-v7a')
with:
version: ${{ env.QT_VERSION }}
host: mac
target: android
arch: android_armv7
dir: ${{ runner.temp }}
extra: --autodesktop
modules: qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d
cache: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}

- name: Install Qt6 for Android (arm64_v8a)
uses: ./install-qt-action/action/
if: contains( env.QT_ANDROID_ABIS, 'arm64-v8a')
with:
version: ${{ env.QT_VERSION }}
host: mac
target: android
arch: android_arm64_v8a
dir: ${{ runner.temp }}
extra: --autodesktop
modules: qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d
cache: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}

- name: Install Qt6 for Android (x86)
uses: ./install-qt-action/action/
if: contains( env.QT_ANDROID_ABIS, 'x86')
with:
version: ${{ env.QT_VERSION }}
host: mac
target: android
arch: android_x86
dir: ${{ runner.temp }}
extra: --autodesktop
modules: qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d
cache: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}

- name: Install Qt6 for Android (x86_64)
uses: ./install-qt-action/action/
if: contains( env.QT_ANDROID_ABIS, 'x86_64')
with:
version: ${{ env.QT_VERSION }}
host: mac
target: android
arch: android_x86_64
dir: ${{ runner.temp }}
extra: --autodesktop
modules: qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d
cache: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}

- name: Install Dependencies
run: |
brew update
brew install ninja cmake
- run: mkdir ${{ runner.temp }}/shadow_build_dir

- name: Configure
working-directory: ${{ runner.temp }}/shadow_build_dir
run: ${{ env.QT_ROOT_DIR }}/bin/qt-cmake -S ${{ github.workspace }} -B . -G Ninja
-DCMAKE_BUILD_TYPE=${{ matrix.BuildType }}
-DQT_ANDROID_ABIS="${{ env.QT_ANDROID_ABIS }}"
-DQT_ANDROID_BUILD_ALL_ABIS=OFF
-DQT_HOST_PATH="${{ env.QT_ROOT_DIR }}/../msvc2019_64"
-DQT_ANDROID_SIGN_APK=${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && 'ON' || 'OFF' }}
-DQT_DEBUG_FIND_PACKAGE=ON
-DQGC_STABLE_BUILD=${{ github.ref_type == 'tag' || contains(github.ref, 'Stable') && 'ON' || 'OFF' }}

- name: Build
working-directory: ${{ runner.temp }}/shadow_build_dir
run: cmake --build . --target all --config ${{ matrix.BuildType }}

- name: Save APK
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT }}
path: ${{ runner.temp }}/shadow_build_dir/android-build/*.apk

0 comments on commit df42735

Please sign in to comment.