name: Android on: [push, pull_request] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: CCACHE_BASEDIR: ${{ github.workspace }} CCACHE_COMPRESS: true CCACHE_MAXSIZE: 150M EVICT_CCACHE_AGE: 1200s CC: gcc OS_NAME: linux jobs: pre-check: runs-on: ubuntu-latest outputs: should_skip: ${{ steps.skip-check.outputs.should_skip }} steps: - id: skip-check uses: fkirc/skip-duplicate-actions@master with: concurrent_skipping: 'same_content_newer' android: needs: pre-check if: ${{ needs.pre-check.outputs.should_skip != 'true' }} runs-on: ubuntu-latest permissions: actions: write env: TEST: android # since the NDK might be newly installed, we have to use this to avoid cache misses CCACHE_COMPILERCHECK: content steps: - uses: actions/checkout@v6 # make sure the NDK we reference is installed and exported so we can use it to build OpenSSL - name: Install NDK id: ndk-install run: | NDK_VERSION=$(grep "ndkVersion" src/frontends/android/app/build.gradle | sed -e 's/.*"\(.*\)"/\1/') echo Using NDK ${NDK_VERSION} yes | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --install "ndk;${NDK_VERSION}" echo "ANDROID_NDK_ROOT=${ANDROID_HOME}/ndk/${NDK_VERSION}" >> "$GITHUB_OUTPUT" - uses: actions/cache/restore@v5 id: cache-restore with: path: ~/.cache/ccache key: ccache-android # necessary for newer versions of the Gradle plugin - uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: 17 cache: 'gradle' - run: | sudo apt-get install -qq ccache echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV ccache -z - uses: ./.github/actions/default env: ANDROID_NDK_ROOT: ${{ steps.ndk-install.outputs.ANDROID_NDK_ROOT }} - run: ccache -sv - uses: actions/upload-artifact@v6 with: name: Lint Results path: src/frontends/android/app/build/reports/lint-results*.xml - if: github.event_name == 'push' run: | ccache --evict-older-than ${{ env.EVICT_CCACHE_AGE }} ccache -sv # delete old cache entry as we currently can't update it any other way - env: GH_TOKEN: ${{ github.token }} if: github.event_name == 'push' && steps.cache-restore.outputs.cache-hit continue-on-error: true run: gh cache delete -r ${{ github.ref }} ${{ steps.cache-restore.outputs.cache-primary-key }} - if: github.event_name == 'push' uses: actions/cache/save@v5 with: path: ~/.cache/ccache key: ${{ steps.cache-restore.outputs.cache-primary-key }}