From 96ab29eba3febd72ee9d9cf70a532dc81f9d2b80 Mon Sep 17 00:00:00 2001 From: Ndacyayisenga-droid Date: Wed, 18 Feb 2026 00:27:20 +0300 Subject: [PATCH 1/2] ci(formulus-android): add Gradle cache and --build-cache to speed up PR APK builds --- .github/workflows/formulus-android.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/formulus-android.yml b/.github/workflows/formulus-android.yml index 84eba0c42..48b14aad8 100644 --- a/.github/workflows/formulus-android.yml +++ b/.github/workflows/formulus-android.yml @@ -72,10 +72,24 @@ jobs: permissions: contents: write + env: + # Use workspace-relative path so we can cache Gradle home (deps + build cache) + GRADLE_USER_HOME: ${{ github.workspace }}/.gradle + steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Restore Gradle cache + uses: actions/cache@v4 + with: + path: | + .gradle/caches + .gradle/wrapper/dists + key: gradle-android-${{ runner.os }}-${{ hashFiles('formulus/android/**/*.gradle', 'formulus/android/**/*.gradle.kts', 'formulus/android/gradle/wrapper/gradle-wrapper.properties', 'formulus/android/gradle.properties', 'formulus/package-lock.json') }} + restore-keys: | + gradle-android-${{ runner.os }}- + - name: Download formplayer assets artifact uses: actions/download-artifact@v7 with: @@ -148,12 +162,12 @@ jobs: - name: Build debug APK (PR) if: github.event_name == 'pull_request' working-directory: formulus/android - run: ./gradlew assembleDebug --no-daemon + run: ./gradlew assembleDebug --no-daemon --build-cache - name: Build release APK (main/dev/release) if: github.event_name != 'pull_request' working-directory: formulus/android - run: ./gradlew assembleRelease --no-daemon + run: ./gradlew assembleRelease --no-daemon --build-cache - name: Upload APK artifact uses: actions/upload-artifact@v6 From 4ad58d058eb5e25fde9c0a5912c1727c74b4e569 Mon Sep 17 00:00:00 2001 From: Ndacyayisenga-droid Date: Wed, 18 Feb 2026 01:03:20 +0300 Subject: [PATCH 2/2] fix --- .github/workflows/formulus-android.yml | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/.github/workflows/formulus-android.yml b/.github/workflows/formulus-android.yml index 48b14aad8..62a0e0fe2 100644 --- a/.github/workflows/formulus-android.yml +++ b/.github/workflows/formulus-android.yml @@ -21,6 +21,10 @@ on: release: types: [published] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + env: NODE_VERSION: '24' @@ -72,24 +76,10 @@ jobs: permissions: contents: write - env: - # Use workspace-relative path so we can cache Gradle home (deps + build cache) - GRADLE_USER_HOME: ${{ github.workspace }}/.gradle - steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Restore Gradle cache - uses: actions/cache@v4 - with: - path: | - .gradle/caches - .gradle/wrapper/dists - key: gradle-android-${{ runner.os }}-${{ hashFiles('formulus/android/**/*.gradle', 'formulus/android/**/*.gradle.kts', 'formulus/android/gradle/wrapper/gradle-wrapper.properties', 'formulus/android/gradle.properties', 'formulus/package-lock.json') }} - restore-keys: | - gradle-android-${{ runner.os }}- - - name: Download formplayer assets artifact uses: actions/download-artifact@v7 with: @@ -130,6 +120,7 @@ jobs: with: distribution: 'temurin' java-version: '17' + cache: 'gradle' - name: Make Gradle wrapper executable working-directory: formulus/android @@ -162,12 +153,12 @@ jobs: - name: Build debug APK (PR) if: github.event_name == 'pull_request' working-directory: formulus/android - run: ./gradlew assembleDebug --no-daemon --build-cache + run: ./gradlew assembleDebug --no-daemon - name: Build release APK (main/dev/release) if: github.event_name != 'pull_request' working-directory: formulus/android - run: ./gradlew assembleRelease --no-daemon --build-cache + run: ./gradlew assembleRelease --no-daemon - name: Upload APK artifact uses: actions/upload-artifact@v6