From 7a766ff2b340333f6f9fbbbd35d35ed989d26877 Mon Sep 17 00:00:00 2001 From: Holden Date: Sun, 28 Apr 2024 16:02:10 -0400 Subject: [PATCH] CI: Add Android Windows Build Workflow --- .github/workflows/android-windows.yml | 153 ++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 .github/workflows/android-windows.yml diff --git a/.github/workflows/android-windows.yml b/.github/workflows/android-windows.yml new file mode 100644 index 000000000000..7e72746aec67 --- /dev/null +++ b/.github/workflows/android-windows.yml @@ -0,0 +1,153 @@ +name: Android-Windows + +on: + workflow_dispatch: + +jobs: + build: + runs-on: windows-latest + + strategy: + matrix: + BuildType: [Debug, Release] + + defaults: + run: + shell: cmd + + 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 + shell: bash + + - name: Install Qt6 for Windows + uses: ./install-qt-action/action/ + with: + version: ${{ env.QT_VERSION }} + host: windows + 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: windows + 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: windows + 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: windows + 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: windows + 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: | + choco install --no-progress ninja -y + choco install --no-progress cmake --installargs 'ADD_CMAKE_TO_PATH=System' --apply-install-arguments-to-dependencies + + - name: Set up Visual Studio shell + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: x64 + + - 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