| name: Instrumented tests on device |
| |
| on: |
| schedule: |
| # Run this twice per day, at 6:13 and 16:13 |
| - cron: '13 6,16 * * *' |
| |
| # Also run this workflow whenever we update this file |
| push: |
| paths: |
| - '.github/workflows/device-tests.yml' |
| |
| jobs: |
| android-test: |
| runs-on: macos-latest |
| if: github.repository == 'google/accompanist' |
| timeout-minutes: 80 |
| |
| strategy: |
| # Allow tests to continue on other devices if they fail on one device. |
| fail-fast: false |
| matrix: |
| api-level: [ 22, 26, 28, 29 ] |
| shard: [ 0, 1, 2 ] # Need to update shard-count below if this changes |
| |
| steps: |
| - uses: actions/checkout@v2 |
| |
| - name: Copy CI gradle.properties |
| run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties |
| |
| - name: set up JDK |
| uses: actions/setup-java@v1 |
| with: |
| java-version: 17 |
| |
| - name: Decrypt secrets |
| run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }} |
| |
| - name: Generate cache key |
| run: ./checksum.sh checksum.txt |
| |
| - uses: actions/cache@v2 |
| with: |
| path: | |
| ~/.gradle/caches/modules-* |
| ~/.gradle/caches/jars-* |
| ~/.gradle/caches/build-cache-* |
| key: gradle-${{ hashFiles('checksum.txt') }} |
| |
| # Determine what emulator image to use. We run all API 29+ emulators using |
| # the google_apis image |
| - name: Determine emulator target |
| id: determine-target |
| env: |
| API_LEVEL: ${{ matrix.api-level }} |
| run: | |
| TARGET="default" |
| if [ "$API_LEVEL" -ge "29" ]; then |
| TARGET="google_apis" |
| fi |
| echo "TARGET=$TARGET" >> $GITHUB_OUTPUT |
| |
| - name: Run device tests |
| uses: reactivecircus/android-emulator-runner@v2 |
| with: |
| api-level: ${{ matrix.api-level }} |
| target: ${{ steps.determine-target.outputs.TARGET }} |
| profile: Galaxy Nexus |
| emulator-build: 7425822 # https://github.com/ReactiveCircus/android-emulator-runner/issues/160 |
| # We run all tests, sharding them over 3 shards |
| script: ./scripts/run-tests.sh --log-file=logcat.txt --shard-index=${{ matrix.shard }} --shard-count=3 |
| |
| - name: Clean secrets |
| if: always() |
| run: release/signing-cleanup.sh |
| |
| - name: Upload logs |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: logs-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }} |
| path: logcat.txt |
| |
| - name: Upload test results |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: test-results-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }} |
| path: | |
| **/build/reports/* |
| **/build/outputs/*/connected/* |