1name: Android Unit Tests
2
3on:
4  workflow_dispatch: {}
5  push:
6    branches: [master]
7    paths:
8      - .github/workflows/android-unit-tests.yml
9      - 'android/**'
10      - 'fastlane/**'
11      - 'tools/**'
12      - yarn.lock
13  pull_request:
14    branches: [master]
15    paths:
16      - .github/workflows/android-unit-tests.yml
17      - 'android/**'
18      - 'fastlane/**'
19      - 'tools/**'
20      - yarn.lock
21
22jobs:
23  test:
24    runs-on: ubuntu-18.04
25    steps:
26      - name: Check out repository
27        uses: actions/checkout@v2
28        with:
29          submodules: true
30      - name: Get yarn cache directory path
31        id: yarn-cache-dir-path
32        run: echo "::set-output name=dir::$(yarn cache dir)"
33      - uses: actions/cache@v1
34        with:
35          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
36          key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
37          restore-keys: |
38            ${{ runner.os }}-yarn-
39      - run: yarn install --frozen-lockfile
40      - uses: actions/cache@v1
41        with:
42          path: ~/.gradle/caches
43          key: ${{ runner.os }}-gradle-${{ hashFiles('android/*.gradle*') }}
44          restore-keys: |
45            ${{ runner.os }}-gradle-
46      - uses: actions/cache@v2
47        id: cache-android-ndk
48        with:
49          path: /usr/local/lib/android/sdk/ndk/19.2.5345600/
50          key: ${{ runner.os }}-ndk-19.2.5345600
51          restore-keys: |
52            ${{ runner.os }}-ndk-
53      - name: Install NDK
54        if: steps.cache-android-ndk.outputs.cache-hit != 'true'
55        run: |
56          sudo $ANDROID_HOME/tools/bin/sdkmanager --install "ndk;19.2.5345600"
57      - run: echo "$(pwd)/bin" >> $GITHUB_PATH
58      - name: Run native Android unit tests
59        env:
60          ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/19.2.5345600/
61        run: expotools native-unit-tests --platform android
62      - name: Save test results
63        if: always()
64        uses: actions/upload-artifact@v2
65        with:
66          name: test-results
67          path: packages/**/build/test-results/**/*xml
68