Merge pull request #2 from flarialmc/fix/pr1-download-reliability #22
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: Android | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| inputs: | |
| run_instrumented: | |
| description: Run the Android emulator test matrix | |
| required: false | |
| default: false | |
| type: boolean | |
| permissions: | |
| contents: read | |
| jobs: | |
| verify: | |
| if: github.event_name != 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '17' | |
| - uses: gradle/actions/setup-gradle@v4 | |
| - name: Unit tests, lint, and debug build | |
| run: ./gradlew testDebugUnitTest lintDebug assembleDebug | |
| - name: Upload verification reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: verification-reports | |
| path: | | |
| app/build/reports/ | |
| app/build/test-results/ | |
| release-apk: | |
| if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' | |
| runs-on: blacksmith-8vcpu-ubuntu-2404 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '17' | |
| - uses: gradle/actions/setup-gradle@v4 | |
| - name: Require signing secrets | |
| env: | |
| KEYSTORE_BASE64: ${{ secrets.LAUNCHLY_KEYSTORE_BASE64 }} | |
| STORE_PASSWORD: ${{ secrets.LAUNCHLY_STORE_PASSWORD }} | |
| KEY_ALIAS: ${{ secrets.LAUNCHLY_KEY_ALIAS }} | |
| KEY_PASSWORD: ${{ secrets.LAUNCHLY_KEY_PASSWORD }} | |
| run: | | |
| test -n "$KEYSTORE_BASE64" | |
| test -n "$STORE_PASSWORD" | |
| test -n "$KEY_ALIAS" | |
| test -n "$KEY_PASSWORD" | |
| - name: Decode production keystore | |
| env: | |
| KEYSTORE_BASE64: ${{ secrets.LAUNCHLY_KEYSTORE_BASE64 }} | |
| run: printf '%s' "$KEYSTORE_BASE64" | base64 --decode > "$RUNNER_TEMP/launchly-release.jks" | |
| - name: Build and verify signed release | |
| env: | |
| LAUNCHLY_STORE_FILE: ${{ runner.temp }}/launchly-release.jks | |
| LAUNCHLY_STORE_PASSWORD: ${{ secrets.LAUNCHLY_STORE_PASSWORD }} | |
| LAUNCHLY_KEY_ALIAS: ${{ secrets.LAUNCHLY_KEY_ALIAS }} | |
| LAUNCHLY_KEY_PASSWORD: ${{ secrets.LAUNCHLY_KEY_PASSWORD }} | |
| REQUIRE_RELEASE_SIGNING: 'true' | |
| run: ./gradlew :app:verifyReleaseArtifact | |
| - name: Upload signed release APK | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: launchly-release-${{ github.sha }} | |
| if-no-files-found: error | |
| path: | | |
| app/build/outputs/apk/release/app-release.apk | |
| app/build/outputs/mapping/release/mapping.txt | |
| dependency-review: | |
| if: github.event_name == 'pull_request' | |
| runs-on: blacksmith-2vcpu-ubuntu-2404 | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/dependency-review-action@v4 | |
| instrumented: | |
| if: github.event_name == 'workflow_dispatch' && inputs.run_instrumented | |
| runs-on: blacksmith-4vcpu-ubuntu-2404 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - api: 28 | |
| profile: pixel_2 | |
| rotation: 0 | |
| - api: 31 | |
| profile: pixel_4 | |
| rotation: 1 | |
| - api: 33 | |
| profile: pixel_6 | |
| rotation: 0 | |
| - api: 35 | |
| profile: pixel_c | |
| rotation: 1 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '17' | |
| - uses: gradle/actions/setup-gradle@v4 | |
| - name: Run API ${{ matrix.api }} instrumentation tests | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: ${{ matrix.api }} | |
| arch: x86_64 | |
| target: google_apis | |
| profile: ${{ matrix.profile }} | |
| script: | | |
| adb shell settings put system accelerometer_rotation 0 | |
| adb shell settings put system user_rotation ${{ matrix.rotation }} | |
| ./gradlew connectedDebugAndroidTest | |
| publish: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: [verify, release-apk] | |
| runs-on: blacksmith-2vcpu-ubuntu-2404 | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '17' | |
| - uses: gradle/actions/setup-gradle@v4 | |
| - name: Require signing secrets | |
| env: | |
| KEYSTORE_BASE64: ${{ secrets.LAUNCHLY_KEYSTORE_BASE64 }} | |
| STORE_PASSWORD: ${{ secrets.LAUNCHLY_STORE_PASSWORD }} | |
| KEY_ALIAS: ${{ secrets.LAUNCHLY_KEY_ALIAS }} | |
| KEY_PASSWORD: ${{ secrets.LAUNCHLY_KEY_PASSWORD }} | |
| run: | | |
| test -n "$KEYSTORE_BASE64" | |
| test -n "$STORE_PASSWORD" | |
| test -n "$KEY_ALIAS" | |
| test -n "$KEY_PASSWORD" | |
| - name: Decode production keystore | |
| env: | |
| KEYSTORE_BASE64: ${{ secrets.LAUNCHLY_KEYSTORE_BASE64 }} | |
| run: printf '%s' "$KEYSTORE_BASE64" | base64 --decode > "$RUNNER_TEMP/launchly-release.jks" | |
| - name: Build and verify signed release | |
| env: | |
| LAUNCHLY_STORE_FILE: ${{ runner.temp }}/launchly-release.jks | |
| LAUNCHLY_STORE_PASSWORD: ${{ secrets.LAUNCHLY_STORE_PASSWORD }} | |
| LAUNCHLY_KEY_ALIAS: ${{ secrets.LAUNCHLY_KEY_ALIAS }} | |
| LAUNCHLY_KEY_PASSWORD: ${{ secrets.LAUNCHLY_KEY_PASSWORD }} | |
| REQUIRE_RELEASE_SIGNING: 'true' | |
| run: ./gradlew clean :app:verifyReleaseArtifact | |
| - name: Prepare release assets | |
| run: | | |
| mkdir -p release-assets | |
| cp app/build/outputs/apk/release/app-release.apk release-assets/launchly-${GITHUB_REF_NAME}.apk | |
| cp app/build/outputs/mapping/release/mapping.txt release-assets/launchly-${GITHUB_REF_NAME}-mapping.txt | |
| cd release-assets | |
| sha256sum * > SHA256SUMS.txt | |
| - name: Publish prerelease | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: gh release create "$GITHUB_REF_NAME" release-assets/* --prerelease --generate-notes --verify-tag |