Add source tarball building action #17
Workflow file for this run
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 CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
tags: | |
- "**" | |
paths-ignore: | |
- ".gitignore" | |
- "README.md" | |
- "docs/**" | |
# ignore CI for other platforms | |
- ".github/FUNDING.yml" | |
- ".github/actions/**" | |
- ".github/workflows/iOS.yml" | |
- ".github/workflows/Linux.yml" | |
- ".github/workflows/macOS.yml" | |
- ".github/workflows/Windows.yml" | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- ".gitignore" | |
- "README.md" | |
- "docs/**" | |
# ignore CI for other platforms | |
- ".github/FUNDING.yml" | |
- ".github/actions/**" | |
- ".github/workflows/iOS.yml" | |
- ".github/workflows/Linux.yml" | |
- ".github/workflows/macOS.yml" | |
- ".github/workflows/Windows.yml" | |
concurrency: | |
# cancel jobs on PRs only | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
jobs: | |
build: | |
name: Build (Qt${{ matrix.qt_version}}, ${{ matrix.abi }}) | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
include: | |
- qt_version: 6.5.3 | |
abi: x86 | |
arch: android_x86 | |
- qt_version: 6.5.3 | |
abi: x86_64 | |
arch: android_x86_64 | |
- qt_version: 6.5.3 | |
abi: armeabi-v7a | |
arch: android_armv7 | |
- qt_version: 6.5.3 | |
abi: arm64-v8a | |
arch: android_arm64_v8a | |
- qt_version: 6.6.3 | |
abi: x86 | |
arch: android_x86 | |
- qt_version: 6.6.3 | |
abi: x86_64 | |
arch: android_x86_64 | |
- qt_version: 6.6.3 | |
abi: armeabi-v7a | |
arch: android_armv7 | |
- qt_version: 6.6.3 | |
abi: arm64-v8a | |
arch: android_arm64_v8a | |
- qt_version: 6.7.2 | |
abi: x86 | |
arch: android_x86 | |
- qt_version: 6.7.2 | |
abi: x86_64 | |
arch: android_x86_64 | |
- qt_version: 6.7.2 | |
abi: armeabi-v7a | |
arch: android_armv7 | |
- qt_version: 6.7.2 | |
abi: arm64-v8a | |
arch: android_arm64_v8a | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: source | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Download Qt | |
id: qt-android | |
uses: jurplel/install-qt-action@v4 | |
with: | |
aqtversion: ==3.1.* | |
version: ${{ matrix.qt_version }} | |
target: android | |
arch: ${{ matrix.arch }} | |
modules: qtlocation qtpositioning | |
- name: Fix Qt release | |
if: ${{ matrix.abi }} == 'armeabi-v7a' | |
run: | | |
chmod +x "$QT_ROOT_DIR/bin/qt-cmake" | |
sed -i "s/C:\/Qt\/Qt-${QT_VERSION}/\/usr\/local\/Qt-${QT_VERSION}/g" "$QT_ROOT_DIR/lib/cmake/Qt6BuildInternals/QtBuildInternalsExtra.cmake" | |
- name: Set up OpenJDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: adopt | |
java-version: 17 | |
- name: Setup ninja | |
uses: seanmiddleditch/gha-setup-ninja@v5 | |
- name: Set up ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: Android_${{ matrix.qt_version }}_${{ matrix.abi }} | |
max-size: 200M | |
- name: Build | |
env: | |
ANDROID_ABI: ${{ matrix.abi }} | |
working-directory: source | |
run: | | |
export QT_HOST_PATH="$(readlink -f "$QT_ROOT_DIR/../gcc_64")" | |
cmake --workflow --preset Android-ccache | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version }}_${{ matrix.abi }} | |
path: build/qt6-Android/maplibre-native-qt_*_Android.tar.bz2 | |
combine: | |
name: Combine | |
runs-on: ubuntu-22.04 | |
needs: build | |
strategy: | |
matrix: | |
qt_version: [6.5.3, 6.6.3, 6.7.2] | |
steps: | |
- name: Download artifacts for x86 | |
uses: actions/download-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version}}_x86 | |
path: install/x86 | |
- name: Download artifacts for x86_64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version}}_x86_64 | |
path: install/x86_64 | |
- name: Download artifacts for armeabi-v7a | |
uses: actions/download-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version}}_armeabi-v7a | |
path: install/armeabi-v7a | |
- name: Download artifacts for arm64-v8a | |
uses: actions/download-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version}}_arm64-v8a | |
path: install/arm64-v8a | |
- name: Combine artifacts | |
run: | | |
pushd install | |
tar xf x86/*.tar.bz2 -C x86/ | |
rm x86/*.tar.bz2 | |
mv x86/maplibre-native-qt_*/* x86/ | |
mv x86/maplibre-native-qt_*/ . | |
tar xf x86_64/*.tar.bz2 -C x86_64/ | |
mv x86_64/maplibre-native-qt_*/* x86_64/ | |
rm -r x86_64/maplibre-native-qt_* | |
tar xf armeabi-v7a/*.tar.bz2 -C armeabi-v7a/ | |
mv armeabi-v7a/maplibre-native-qt_*/* armeabi-v7a/ | |
rm -r armeabi-v7a/maplibre-native-qt_* | |
tar xf arm64-v8a/*.tar.bz2 -C arm64-v8a/ | |
mv arm64-v8a/maplibre-native-qt_*/* arm64-v8a/ | |
rm -r arm64-v8a/maplibre-native-qt_* | |
mv x86 x86_64 armeabi-v7a arm64-v8a maplibre-native-qt_* | |
popd | |
- name: Create artifacts | |
run: | | |
pushd install | |
tar cjvf ../maplibre-native-qt_Android.tar.bz2 * | |
popd | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version}} | |
path: maplibre-native-qt_Android.tar.bz2 | |
release: | |
name: Release | |
if: github.ref_type == 'tag' | |
runs-on: ubuntu-22.04 | |
needs: combine | |
permissions: | |
contents: write | |
strategy: | |
matrix: | |
qt_version: [6.5.3, 6.6.3, 6.7.2] | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: Android_${{ matrix.qt_version }} | |
- name: Rename tarball | |
env: | |
TAG_NAME: ${{ github.ref_name }} | |
QT_VERSION: ${{ matrix.qt_version }} | |
run: | | |
mv maplibre-native-qt_Android.tar.bz2 maplibre-native-qt_${TAG_NAME}_Qt${QT_VERSION}_Android.tar.bz2 | |
- name: Release | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: maplibre-native-qt_${{ github.ref_name }}_Qt${{ matrix.qt_version }}_Android.tar.bz2 | |
allowUpdates: true | |
draft: true |