Fix condition for AAB signing step in workflow #10
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: Build Android APK | |
| on: | |
| push: | |
| branches: [ dev ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| build: | |
| name: Build APK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v3 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| - name: Setup Gradle cache | |
| uses: gradle/actions/setup-gradle@v5 | |
| # ---- Version aus Gradle lesen ---- | |
| - name: Read versionName from Gradle | |
| id: ver | |
| run: | | |
| VERSION_NAME=$(./gradlew -q :app:printVersionName) | |
| echo "version_name=$VERSION_NAME" >> $GITHUB_OUTPUT | |
| - name: Build debug APK | |
| run: ./gradlew assembleDebug | |
| - name: Build debug AAB | |
| run: ./gradlew bundleDebug | |
| # ---- Artefakte umbenennen ---- | |
| - name: Rename outputs to the correct version | |
| id: rename | |
| run: | | |
| set -e | |
| VER="${{ steps.ver.outputs.version_name }}" | |
| APK_SRC="app/build/outputs/apk/debug" | |
| AAB_SRC="app/build/outputs/bundle/debug" | |
| APK_PATH=$(ls "$APK_SRC"/*.apk | head -n1) | |
| AAB_PATH=$(ls "$AAB_SRC"/*.aab | head -n1) | |
| APK_OUT="ipv64net_v${VER}-debug.apk" | |
| AAB_OUT="ipv64net_v${VER}-debug.aab" | |
| cp "$APK_PATH" "$APK_OUT" | |
| cp "$AAB_PATH" "$AAB_OUT" | |
| echo "apk=$APK_OUT" >> $GITHUB_OUTPUT | |
| echo "aab=$AAB_OUT" >> $GITHUB_OUTPUT | |
| echo "version=$VER" >> $GITHUB_OUTPUT | |
| # ---- Als Build-Artefakt hochladen (optional, nützlich für CI-Download) ---- | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ipv64net-${{ steps.rename.outputs.version }}-debug | |
| path: | | |
| ${{ steps.rename.outputs.apk }} | |
| ${{ steps.rename.outputs.aab }} | |
| - name: Decode keystore | |
| if: ${{ env.ANDROID_KEYSTORE_BASE64 != '' }} | |
| env: | |
| ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | |
| run: echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > releaseKey.jks | |
| - name: Build release APK | |
| run: ./gradlew assembleRelease | |
| - name: Build release AAB | |
| run: ./gradlew bundleRelease | |
| - name: Sign APK | |
| run: | | |
| jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \ | |
| -keystore releaseKey.jks -storepass ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} \ | |
| -keypass ${{ secrets.ANDROID_KEY_PASSWORD }} \ | |
| app/build/outputs/apk/release/app-release-unsigned.apk ${{ secrets.ANDROID_KEY_ALIAS }} | |
| - name: Verify signature | |
| run: jarsigner -verify -verbose -certs app/build/outputs/apk/release/app-release-unsigned.apk | |
| - name: Align APK | |
| run: | | |
| $ANDROID_HOME/build-tools/34.0.0/zipalign -v 4 \ | |
| app/build/outputs/apk/release/app-release-unsigned.apk \ | |
| app/build/outputs/apk/release/app-release.apk | |
| # ======= AAB signieren (falls NICHT schon durch Gradle gesigned) ======= | |
| # Wenn du signingConfigs.release in Gradle mit releaseKey.jks verwendest, | |
| # ist das AAB bereits signiert und du kannst diesen Schritt weg lassen. | |
| - name: Sign AAB (optional) | |
| if: ${{ env.ANDROID_KEYSTORE_BASE64 != '' }} | |
| env: | |
| ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} | |
| run: | | |
| jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \ | |
| -keystore releaseKey.jks -storepass ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} \ | |
| -keypass ${{ secrets.ANDROID_KEY_PASSWORD }} \ | |
| app/build/outputs/bundle/release/app-release.aab ${{ secrets.ANDROID_KEY_ALIAS }} | |
| - name: Verify AAB signature | |
| run: jarsigner -verify -verbose -certs app/build/outputs/bundle/release/app-release.aab | |
| # ---- Artefakte umbenennen ---- | |
| - name: Rename outputs to the correct version | |
| id: renamesign | |
| run: | | |
| set -e | |
| VER="${{ steps.ver.outputs.version_name }}" | |
| APK_SRC="app/build/outputs/apk/release" | |
| AAB_SRC="app/build/outputs/bundle/release" | |
| APK_PATH=$(ls "$APK_SRC"/*release.apk | head -n1) | |
| AAB_PATH=$(ls "$AAB_SRC"/*release.aab | head -n1) | |
| APK_OUT="ipv64net_v${VER}-signed.apk" | |
| AAB_OUT="ipv64net_v${VER}-signed.aab" | |
| cp "$APK_PATH" "$APK_OUT" | |
| cp "$AAB_PATH" "$AAB_OUT" | |
| echo "apk=$APK_OUT" >> $GITHUB_OUTPUT | |
| echo "aab=$AAB_OUT" >> $GITHUB_OUTPUT | |
| echo "version=$VER" >> $GITHUB_OUTPUT | |
| - name: Upload Signed APK & AAB | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ipv64net-${{ steps.renamesign.outputs.version }}-signed | |
| path: | | |
| ${{ steps.renamesign.outputs.apk }} | |
| ${{ steps.renamesign.outputs.aab }} |