Add free disk space action to CI actions #15157
Workflow file for this run
This file contains hidden or 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: 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: | |
| - name: Free Disk Space (Ubuntu) | |
| uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be | |
| with: | |
| # This might remove tools that are actually needed, if set to "true" but frees about 6 GB | |
| tool-cache: true | |
| # All of these default to true, but we should only need the 'android' one (and maybe swap-storage?) | |
| android: false | |
| dotnet: true | |
| haskell: true | |
| # This takes way too long to run | |
| large-packages: true | |
| docker-images: true | |
| swap-storage: false | |
| - uses: actions/checkout@v6 | |
| 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@v5 | |
| with: | |
| distribution: 'temurin' # See 'Supported distributions' for available options | |
| java-version: '21' | |
| - name: Configure gradle | |
| uses: gradle/actions/setup-gradle@v5 | |
| 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 }} | |
| ELEMENT_SDK_SENTRY_DSN: ${{ secrets.ELEMENT_SDK_SENTRY_DSN }} | |
| ELEMENT_CALL_SENTRY_DSN: ${{ secrets.ELEMENT_CALL_SENTRY_DSN }} | |
| ELEMENT_CALL_POSTHOG_API_HOST: ${{ secrets.ELEMENT_CALL_POSTHOG_API_HOST }} | |
| ELEMENT_CALL_POSTHOG_API_KEY: ${{ secrets.ELEMENT_CALL_POSTHOG_API_KEY }} | |
| ELEMENT_CALL_RAGESHAKE_URL: ${{ secrets.ELEMENT_CALL_RAGESHAKE_URL }} | |
| run: ./gradlew :app:assembleGplayDebug app:assembleFDroidDebug -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES | |
| - name: Upload debug APKs | |
| if: ${{ matrix.variant == 'debug' }} | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: elementx-debug | |
| path: | | |
| app/build/outputs/apk/gplay/debug/*-universal-debug.apk | |
| app/build/outputs/apk/fdroid/debug/*-universal-debug.apk | |
| - uses: rnkdsh/action-upload-diawi@4e1421305be7cfc510d05f47850262eeaf345108 # v1.5.12 | |
| 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@a423635d183a8259308e80593c96fecf31539c26 # v2.1.0 | |
| 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 bundleGplayRelease -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES | |
| - name: Compile nightly sources | |
| if: ${{ matrix.variant == 'nightly' }} | |
| run: ./gradlew compileGplayNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES |