• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: Validate
2
3on:
4  pull_request:
5  push:
6    branches:
7      - master
8
9jobs:
10  gradle-wrapper:
11    runs-on: ubuntu-latest
12    steps:
13      - uses: actions/checkout@v3
14      - uses: gradle/wrapper-validation-action@v1
15  lint:
16    runs-on: ubuntu-latest
17    steps:
18      - name: Checkout the code
19        uses: actions/checkout@v3
20      - name: Setup JDK
21        uses: actions/setup-java@v2
22        with:
23          distribution: "zulu"
24          java-version: 17
25      - uses: gradle/gradle-build-action@v2
26      - name: Run Lint
27        run: ./gradlew lintDebug --no-daemon
28      - name: Zip reports
29        if: always()
30        run: zip -r reports.zip . -i '**/reports/*.xml' '**/reports/*.html'
31      - name: Upload reports
32        if: always()
33        uses: actions/upload-artifact@v2
34        with:
35          name: lint_reports
36          path: reports.zip
37  unit-test:
38    runs-on: ubuntu-latest
39    steps:
40      - name: Checkout the code
41        uses: actions/checkout@v3
42      - name: Setup JDK
43        uses: actions/setup-java@v2
44        with:
45          distribution: "zulu"
46          java-version: 17
47      - uses: gradle/gradle-build-action@v2
48      - name: Run Unit Tests
49        run: ./gradlew testDebugUnitTest --no-daemon
50      - name: Zip reports
51        if: always()
52        run: zip -r reports.zip . -i '**/reports/*.xml' '**/reports/*.html'
53      - name: Upload reports
54        if: always()
55        uses: actions/upload-artifact@v2
56        with:
57          name: unit_test_reports
58          path: reports.zip
59  api-compatibility:
60    runs-on: ubuntu-latest
61    steps:
62      - name: Checkout the code
63        uses: actions/checkout@v3
64      - name: Setup JDK
65        uses: actions/setup-java@v2
66        with:
67          distribution: "zulu"
68          java-version: 17
69      - uses: gradle/gradle-build-action@v2
70      - name: Run API compatibility check
71        run: ./gradlew apiCheck --no-daemon
72
73  snapshot-tests:
74    runs-on: ubuntu-latest
75    steps:
76      - name: Checkout the code
77        uses: actions/checkout@v3
78      - name: Setup env
79        shell: bash
80        run: |
81          curl https://us-central1-lottie-snapshots.cloudfunctions.net/snapshot-env-v1/emulator > snapshot-env
82          while read line; do
83            echo "$line" >> $GITHUB_ENV
84          done < snapshot-env
85      - name: Setup JDK
86        uses: actions/setup-java@v2
87        with:
88          distribution: "zulu"
89          java-version: 17
90      - uses: gradle/gradle-build-action@v2
91      - name: Build app
92        run: ./gradlew snapshot-tests:assembleDebug snapshot-tests:assembleDebugAndroidTest --no-daemon
93      - name: Run tests
94        uses: emulator-wtf/run-tests@v0.9.6
95        with:
96          api-token: ${{ env.EW_API_TOKEN }}
97          version: 0.9.19
98          app: snapshot-tests/build/outputs/apk/debug/snapshot-tests-debug.apk
99          test: snapshot-tests/build/outputs/apk/androidTest/debug/snapshot-tests-debug-androidTest.apk
100          devices: |
101            model=Pixel2,version=23,gpu=auto
102            model=Pixel2,version=31,gpu=auto
103          outputs-dir: build/test-results
104      - name: Save PR number
105        if: github.event_name == 'pull_request'
106        env:
107          PR_NUMBER: ${{ github.event.number }}
108        run: |
109          mkdir -p ./env
110          echo PR_NUMBER=$PR_NUMBER > ./env/env
111          echo GITHUB_SHA=${{ github.sha }} >> ./env/env
112      - uses: actions/upload-artifact@v3
113        with:
114          name: env
115          path: env/
116  deploy:
117    if: github.event_name == 'push' && github.repository == 'airbnb/lottie-android' && github.ref == 'refs/heads/master'
118    runs-on: ubuntu-latest
119    needs: [lint, unit-test, gradle-wrapper, snapshot-tests]
120    steps:
121      - name: Checkout the code
122        uses: actions/checkout@v3
123      - name: Setup JDK
124        uses: actions/setup-java@v2
125        with:
126          distribution: "zulu"
127          java-version: 17
128      - uses: gradle/gradle-build-action@v2
129      - name: "Deploy Snapshot"
130        env:
131          SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
132          SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
133        run: ./deploy_snapshot.sh
134