diff --git a/.github/workflows/ci-android.yml b/.github/workflows/ci-android.yml index 0564ec6..50922ef 100644 --- a/.github/workflows/ci-android.yml +++ b/.github/workflows/ci-android.yml @@ -35,6 +35,7 @@ jobs: java-version: 21 - uses: gradle/actions/setup-gradle@v4 - name: Decode keystore + if: github.event_name != 'pull_request' run: echo "${{ secrets.RELEASE_KEYSTORE_FILE }}" | base64 --decode > android/release.keystore - name: Setup Android SDK uses: android-actions/setup-android@v3 @@ -43,6 +44,7 @@ jobs: - name: Install NDK run: sdkmanager "ndk;30.0.14904198" - name: Create local.properties + if: github.event_name != 'pull_request' run: | cat < android/local.properties RELEASE_STORE_FILE=../release.keystore @@ -50,7 +52,12 @@ jobs: RELEASE_KEY_ALIAS=${{ secrets.RELEASE_KEY_ALIAS }} RELEASE_KEY_PASSWORD=${{ secrets.RELEASE_KEY_PASSWORD }} EOF - - name: Build + - name: Build debug APK for PRs + if: github.event_name == 'pull_request' + run: ./gradlew assembleFossDebug + working-directory: android + - name: Build release artifacts + if: github.event_name != 'pull_request' run: ./gradlew packageReleaseArtifacts working-directory: android - name: Get app version @@ -59,26 +66,37 @@ jobs: - id: vars run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - uses: actions/upload-artifact@v4 + if: github.event_name != 'pull_request' with: name: apk-release path: release/*release.apk - uses: actions/upload-artifact@v4 + if: github.event_name == 'pull_request' + with: + name: apk-debug + path: android/app/build/outputs/apk/foss/debug/app-foss-debug.apk + + - uses: actions/upload-artifact@v4 + if: github.event_name != 'pull_request' with: name: apk-debug path: release/*debug.apk - uses: actions/upload-artifact@v4 + if: github.event_name != 'pull_request' with: name: root-module-release path: release/*release.zip - uses: actions/upload-artifact@v4 + if: github.event_name != 'pull_request' with: name: root-module-debug path: release/*debug.zip - uses: actions/upload-artifact@v4 + if: github.event_name != 'pull_request' with: name: release-bundle path: release/*.aab diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 05169f8..48a570b 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -10,17 +10,29 @@ plugins { id("kotlin-parcelize") } +val localPropsFile = rootProject.file("local.properties") val props = Properties().apply { - load(rootProject.file("local.properties").inputStream()) + if (localPropsFile.exists()) { + load(localPropsFile.inputStream()) + } } +val releaseSigningAvailable = listOf( + "RELEASE_STORE_FILE", + "RELEASE_STORE_PASSWORD", + "RELEASE_KEY_ALIAS", + "RELEASE_KEY_PASSWORD" +).all { props[it]?.toString()?.isNotBlank() == true } + android { signingConfigs { - create("release") { - storeFile = file(props["RELEASE_STORE_FILE"] as String) - storePassword = props["RELEASE_STORE_PASSWORD"] as String - keyAlias = props["RELEASE_KEY_ALIAS"] as String - keyPassword = props["RELEASE_KEY_PASSWORD"] as String + if (releaseSigningAvailable) { + create("release") { + storeFile = file(props["RELEASE_STORE_FILE"] as String) + storePassword = props["RELEASE_STORE_PASSWORD"] as String + keyAlias = props["RELEASE_KEY_ALIAS"] as String + keyPassword = props["RELEASE_KEY_PASSWORD"] as String + } } } namespace = "me.kavishdevar.librepods" @@ -45,14 +57,18 @@ android { } } buildConfigField("Boolean", "PLAY_BUILD", "false") - signingConfig = signingConfigs.getByName("release") + if (releaseSigningAvailable) { + signingConfig = signingConfigs.getByName("release") + } defaultConfig { minSdk = 33 } } debug { buildConfigField("Boolean", "PLAY_BUILD", "false") - signingConfig = signingConfigs.getByName("release") + if (releaseSigningAvailable) { + signingConfig = signingConfigs.getByName("release") + } versionNameSuffix = "-debug" defaultConfig { minSdk = 33