* Use secret Sentry DSN value. We realised our DSN entry has been shipped along with the code and it was being used in several forks as is, resulting in wrong bug reports coming into our Sentry dashboard and making it very hard to debug actual issues in the app.
95 lines
4.2 KiB
YAML
95 lines
4.2 KiB
YAML
name: APK Build
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
pull_request:
|
|
merge_group:
|
|
push:
|
|
branches: [ develop ]
|
|
|
|
# Enrich gradle.properties for CI/CD
|
|
env:
|
|
GRADLE_OPTS: -Dorg.gradle.jvmargs=-Xmx9g -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -Dkotlin.daemon.jvm.options=-Xmx4g
|
|
CI_GRADLE_ARG_PROPERTIES: --stacktrace -Dsonar.gradle.skipCompile=true --no-configuration-cache
|
|
|
|
jobs:
|
|
build:
|
|
name: Build APKs
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
variant: [debug, release, nightly]
|
|
fail-fast: false
|
|
# Allow all jobs on develop. Just one per PR.
|
|
concurrency:
|
|
group: ${{ github.ref == 'refs/heads/develop' && format('build-develop-{0}-{1}', matrix.variant, github.sha) || format('build-{0}-{1}', matrix.variant, github.ref) }}
|
|
cancel-in-progress: true
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
# Ensure we are building the branch and not the branch after being merged on develop
|
|
# https://github.com/actions/checkout/issues/881
|
|
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.ref }}
|
|
- name: Use JDK 21
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
|
java-version: '21'
|
|
- name: Configure gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
with:
|
|
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
|
|
- name: Assemble debug APKs
|
|
if: ${{ matrix.variant == 'debug' }}
|
|
env:
|
|
ELEMENT_ANDROID_MAPTILER_API_KEY: ${{ secrets.MAPTILER_KEY }}
|
|
ELEMENT_ANDROID_MAPTILER_LIGHT_MAP_ID: ${{ secrets.MAPTILER_LIGHT_MAP_ID }}
|
|
ELEMENT_ANDROID_MAPTILER_DARK_MAP_ID: ${{ secrets.MAPTILER_DARK_MAP_ID }}
|
|
ELEMENT_ANDROID_SENTRY_DSN: ${{ secrets.ELEMENT_ANDROID_SENTRY_DSN }}
|
|
run: ./gradlew :app:assembleGplayDebug app:assembleFDroidDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
|
|
- name: Upload debug APKs
|
|
if: ${{ matrix.variant == 'debug' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: elementx-debug
|
|
path: |
|
|
app/build/outputs/apk/gplay/debug/*-universal-debug.apk
|
|
app/build/outputs/apk/fdroid/debug/*-universal-debug.apk
|
|
- name: Upload x86_64 APK for Maestro
|
|
if: ${{ matrix.variant == 'debug' }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: elementx-apk-maestro
|
|
path: |
|
|
app/build/outputs/apk/gplay/debug/app-gplay-x86_64-debug.apk
|
|
retention-days: 5
|
|
overwrite: true
|
|
if-no-files-found: error
|
|
- uses: rnkdsh/action-upload-diawi@v1.5.5
|
|
id: diawi
|
|
# Do not fail the whole build if Diawi upload fails
|
|
continue-on-error: true
|
|
env:
|
|
token: ${{ secrets.DIAWI_TOKEN }}
|
|
if: ${{ matrix.variant == 'debug' && github.event_name == 'pull_request' && env.token != '' }}
|
|
with:
|
|
token: ${{ env.token }}
|
|
file: app/build/outputs/apk/gplay/debug/app-gplay-arm64-v8a-debug.apk
|
|
- name: Add or update PR comment with QR Code to download APK.
|
|
if: ${{ matrix.variant == 'debug' && github.event_name == 'pull_request' && steps.diawi.conclusion == 'success' }}
|
|
uses: NejcZdovc/comment-pr@v2
|
|
with:
|
|
message: |
|
|
:iphone: Scan the QR code below to install the build (arm64 only) for this PR.
|
|

|
|
If you can't scan the QR code you can install the build via this link: ${{ steps.diawi.outputs['url'] }}
|
|
# Enables to identify and update existing Ad-hoc release message on new commit in the PR
|
|
identifier: "GITHUB_COMMENT_QR_CODE"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Compile release sources
|
|
if: ${{ matrix.variant == 'release' }}
|
|
run: ./gradlew compileReleaseSources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
|
|
- name: Compile nightly sources
|
|
if: ${{ matrix.variant == 'nightly' }}
|
|
run: ./gradlew compileGplayNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES
|