Improve QA APK Action #21289
Workflow file for this run
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
| # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors | |
| # SPDX-FileCopyrightText: 2023 Andy Scherzinger <info@andy-scherzinger.de> | |
| # SPDX-License-Identifier: MIT | |
| name: "QA" | |
| on: | |
| pull_request: | |
| branches: [ main, master, stable-* ] | |
| permissions: | |
| pull-requests: write | |
| contents: read | |
| concurrency: | |
| group: qa-build-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| qa: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check if secrets are available | |
| run: echo "ok=${{ secrets.KS_PASS != '' }}" >> "$GITHUB_OUTPUT" | |
| id: check-secrets | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| if: ${{ steps.check-secrets.outputs.ok == 'true' }} | |
| with: | |
| persist-credentials: false | |
| - name: set up JDK 21 | |
| uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0 | |
| if: ${{ steps.check-secrets.outputs.ok == 'true' }} | |
| with: | |
| distribution: "temurin" | |
| java-version: 21 | |
| - name: Build QA | |
| id: build-qa | |
| if: ${{ steps.check-secrets.outputs.ok == 'true' }} | |
| env: | |
| KS_PASS: ${{ secrets.KS_PASS }} | |
| KEY_PASS: ${{ secrets.KEY_PASS }} | |
| LOG_USERNAME: ${{ secrets.LOG_USERNAME }} | |
| LOG_PASSWORD: ${{ secrets.LOG_PASSWORD }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| mkdir -p "$HOME/.gradle" | |
| { | |
| echo "org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g" | |
| echo "org.gradle.caching=true" | |
| echo "org.gradle.parallel=true" | |
| echo "org.gradle.configureondemand=true" | |
| } > "$HOME/.gradle/gradle.properties" | |
| [ -e app/build.gradle ] && sed -i "/qa/,/\}/ s/versionCode .*/versionCode ${{github.event.number}} /" "app/build.gradle" | |
| [ -e app/build.gradle ] && sed -i "/qa/,/\}/ s/versionName .*/versionName \"${{github.event.number}}\"/" "app/build.gradle" | |
| [ -e app/build.gradle.kts ] && sed -i "/qa/,/\}/ s/versionCode .*/versionCode = ${{github.event.number}} /" "app/build.gradle.kts" | |
| [ -e app/build.gradle.kts ] && sed -i "/qa/,/\}/ s/versionName .*/versionName = \"${{github.event.number}}\"/" "app/build.gradle.kts" | |
| ./gradlew assembleQaDebug | |
| $(find /usr/local/lib/android/sdk/build-tools/*/apksigner | sort | tail -n1) sign --ks-pass pass:"$KS_PASS" --key-pass pass:"$KEY_PASS" --ks-key-alias key0 --ks ".github/workflows/QA_keystore.jks" app/build/outputs/apk/qa/debug/*qa-debug*.apk | |
| apk=$(find app/build/outputs/apk/qa/debug -name '*qa-debug*.apk' | head -n1) | |
| echo "apk-path=$apk" >> "$GITHUB_OUTPUT" | |
| echo "apk-name=$(basename "$apk")" >> "$GITHUB_OUTPUT" | |
| echo "apk-size=$(du -h "$apk" | cut -f1)" >> "$GITHUB_OUTPUT" | |
| - name: Upload APK | |
| id: upload-apk | |
| if: ${{ steps.check-secrets.outputs.ok == 'true' }} | |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f | |
| with: | |
| path: ${{ steps.build-qa.outputs.apk-path }} | |
| if-no-files-found: error | |
| retention-days: 7 | |
| archive: false | |
| - name: Create QR code | |
| id: qr | |
| if: ${{ steps.check-secrets.outputs.ok == 'true' }} | |
| env: | |
| ARTIFACT_URL: ${{ steps.upload-apk.outputs.artifact-url }} | |
| run: | | |
| sudo apt-get -y install qrencode | |
| qrencode -t UTF8i "$ARTIFACT_URL" >> "$GITHUB_OUTPUT" | |
| - name: Comment PR | |
| if: ${{ steps.check-secrets.outputs.ok == 'true' }} | |
| uses: thollander/actions-comment-pull-request@e4a76dd2b0a3c2027c3fd84147a67c22ee4c90fa | |
| with: | |
| comment-tag: qa-apk | |
| mode: upsert | |
| message: | | |
| ### :iphone: QA build | |
| | | | | |
| |---|---| | |
| | **Download** | [${{ steps.build-qa.outputs.apk-name }}](${{ steps.upload-apk.outputs.artifact-url }}) (${{ steps.build-qa.outputs.apk-size }}) | | |
| | **Commit** | ${{ github.event.pull_request.head.sha }} | | |
| | **Version** | `${{ github.event.number }}` | | |
| | **Available until** | 7 days after this build | | |
| ${{ steps.qr.outputs }} | |
| The QA build installs alongside a released Nextcloud app, so you can keep | |
| using your existing install while testing. | |
| Downloading the file requires a GitHub account, so scan the QR code on a | |
| device that is signed in, or transfer the APK to it. |