flarial-ize #4
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: | |
| branches: [master, main] | |
| tags: ['v*'] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| verify: | |
| 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: R8 release acceptance checks | |
| run: ./gradlew :app:verifyReleaseArtifact | |
| - name: Upload verification reports | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: verification-reports | |
| path: | | |
| app/build/reports/ | |
| app/build/test-results/ | |
| dependency-review: | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/dependency-review-action@v4 | |
| instrumented: | |
| runs-on: ubuntu-latest | |
| 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, instrumented] | |
| runs-on: ubuntu-latest | |
| 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 |