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