From b777a6e2232bb6544c1865860dab774de5fd7556 Mon Sep 17 00:00:00 2001 From: Android PowerUser <88908510+Android-PowerUser@users.noreply.github.com> Date: Wed, 3 Jun 2026 16:14:38 +0200 Subject: [PATCH] Enable Gradle build cache and unsigned AAB build --- .github/workflows/manual.yml | 32 ++++++++++++++++++++++++++------ app/build.gradle.kts | 8 ++++---- gradle.properties | 2 +- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index e7f81564..81eb3007 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -136,6 +136,14 @@ jobs: distribution: 'temurin' cache: gradle + - name: Cache Gradle build cache + uses: actions/cache@v4 + with: + path: ~/.gradle/build-cache + key: gradle-build-cache-${{ runner.os }}-${{ hashFiles('**/*.gradle.kts', '**/gradle.properties', 'app/src/**', 'humanoperator/src/**') }} + restore-keys: | + gradle-build-cache-${{ runner.os }}- + - name: Decode google-services.json (app) env: GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON_APP }} @@ -152,8 +160,8 @@ jobs: - name: Fix gradle.properties for CI run: | sed -i '/org.gradle.java.home=/d' gradle.properties - sed -i 's/org.gradle.jvmargs=.*/org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m/' gradle.properties - sed -i 's/kotlin.daemon.jvmargs=.*/kotlin.daemon.jvmargs=-Xmx1536m -XX:MaxMetaspaceSize=512m/' gradle.properties + sed -i '/kotlin.daemon.jvmargs=/d' gradle.properties + sed -i 's/org.gradle.jvmargs=.*/org.gradle.jvmargs=-Xmx3072m -XX:MaxMetaspaceSize=512m/' gradle.properties - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -178,10 +186,22 @@ jobs: with: name: humanoperator-debug path: humanoperator/build/outputs/apk/debug/humanoperator-debug.apk + + - name: Build app release AAB (unsigned) + if: env.BUILD_APP == 'true' + run: ./gradlew :app:bundleRelease + + - name: Upload app release AAB (unsigned) + if: env.BUILD_APP == 'true' + uses: actions/upload-artifact@v4 + with: + name: app-release-aab-unsigned + path: app/build/outputs/bundle/release/app-release.aab + - name: Build summary run: | echo "### Build Summary" >> $GITHUB_STEP_SUMMARY - echo "| Module | Built |" >> $GITHUB_STEP_SUMMARY - echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY - echo "| app | ${{ env.BUILD_APP }} |" >> $GITHUB_STEP_SUMMARY - echo "| humanoperator | ${{ env.BUILD_HUMANOPERATOR }} |" >> $GITHUB_STEP_SUMMARY + echo "| Module | Built | Artefakte |" >> $GITHUB_STEP_SUMMARY + echo "|--------|-------|-----------|" >> $GITHUB_STEP_SUMMARY + echo "| app | ${{ env.BUILD_APP }} | APK (debug) + AAB (release, unsigned) |" >> $GITHUB_STEP_SUMMARY + echo "| humanoperator | ${{ env.BUILD_HUMANOPERATOR }} | APK (debug) |" >> $GITHUB_STEP_SUMMARY diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5362a462..d948e837 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -27,8 +27,8 @@ val missingReleaseSigningEnv = releaseSigningEnv .filterValues { it.isNullOrBlank() } .keys -val isReleaseTaskRequested = gradle.startParameter.taskNames.any { task -> - task.contains("release", ignoreCase = true) +val isAssembleReleaseRequested = gradle.startParameter.taskNames.any { task -> + task.contains("assemble", ignoreCase = true) && task.contains("release", ignoreCase = true) } val missingReleaseSigningEnvText = missingReleaseSigningEnv.joinToString(separator = ", ") @@ -183,14 +183,14 @@ androidComponents { } tasks.configureEach { - if (name == "assemble$variantNameCap") { + if (name == "assemble$variantNameCap" || name == "bundle$variantNameCap") { dependsOn(verifyTask) } } } } -if (isReleaseTaskRequested && missingReleaseSigningEnv.isNotEmpty()) { +if (isAssembleReleaseRequested && missingReleaseSigningEnv.isNotEmpty()) { error( "Release signing env vars missing for module :app: ${missingReleaseSigningEnvText}. " + "Set ANDROID_KEYSTORE_PATH, ANDROID_KEY_ALIAS, ANDROID_KEYSTORE_PASSWORD and ANDROID_KEY_PASSWORD." diff --git a/gradle.properties b/gradle.properties index dc68f3c8..c28aa2a7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ org.gradle.java.home=/root/.local/share/mise/installs/java/17.0.2 org.gradle.parallel=false # Enable Gradle build cache -org.gradle.caching=false +org.gradle.caching=true # Enable configuration on demand org.gradle.configureondemand=true