diff --git a/.github/workflows/google-play-release.yml b/.github/workflows/google-play-release.yml new file mode 100644 index 00000000..c01f98b9 --- /dev/null +++ b/.github/workflows/google-play-release.yml @@ -0,0 +1,91 @@ +name: Firebase App Distribution + +on: + pull_request: + branches: [ google/* ] + types: [opened, synchronize, reopened, ready_for_review] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + android: + if: ${{ github.event.pull_request.draft == false }} + runs-on: ubuntu-latest + environment: Firebase + timeout-minutes: 60 + + steps: + - uses: actions/checkout@v4 + - name: Setup environment variables + run: | + echo "ANDROID_NSW_TRANSPORT_API_KEY=${{ secrets.ANDROID_NSW_TRANSPORT_API_KEY }}" >> $GITHUB_ENV + echo "IOS_NSW_TRANSPORT_API_KEY=${{ secrets.IOS_NSW_TRANSPORT_API_KEY }}" >> $GITHUB_ENV + + - name: set up JDK + uses: actions/setup-java@v4 + with: + distribution: zulu + java-version: 21 + + - name: Setup firebase + run: | + curl -sL https://firebase.tools | bash + + - name: Cache Gradle and wrapper + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Make Gradle executable + run: chmod +x ./gradlew + + - name: Firebase (Debug) - Google Services.json file + env: + DATA: ${{ secrets.FIREBASE_GOOGLE_SERVICES_JSON_DEBUG }} + run: echo $DATA | base64 -di > composeApp/src/debug/google-services.json + + - name: Firebase Android (Release) - Google Services.json file + env: + DATA: ${{ secrets.FIREBASE_GOOGLE_SERVICES_JSON_RELEASE }} + run: echo $DATA | base64 -di > composeApp/src/release/google-services.json + + - name: Build Android Release + env: + ANDROID_NSW_TRANSPORT_API_KEY: ${{ secrets.ANDROID_NSW_TRANSPORT_API_KEY }} + run: ./gradlew :composeApp:bundleRelease + + - name: Sign Android Release AAB + id: signed_release_aab + uses: r0adkll/sign-android-release@v1.0.4 + with: + releaseDirectory: composeApp/build/outputs/bundle/release + signingKeyBase64: ${{ secrets.ANDROID_KEYSTORE_FILE }} + alias: ${{ secrets.ANDROID_KEY_ALIAS }} + keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} + keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }} + + # Uploading Signed AAB to internal track of PlayConsole + - name: Deploy to Play Store (Internal) + uses: r0adkll/upload-google-play@v1 + with: + serviceAccountJsonPlainText: ${{ secrets.FIREBASE_SERVICE_ACCOUNT }} + packageName: com.prime.player + releaseFiles: ${{steps.signed_release_aab.outputs.signedReleaseFile}} + track: internal + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ env.GIT_TAG }} + generate_release_notes: true + changesNotSentForReview: false + prerelease: true + files: | + ${{steps.signed_release_aab.outputs.signedReleaseFile}}