diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2022-01-15 21:24:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-15 21:24:00 +0100 |
commit | 2243ca372e9fd7272d61913d63d000060a7af9f6 (patch) | |
tree | 094474d09f8b7badcb35f2c9ca86373a3b98fc95 /.github/workflows/checks.yml | |
parent | 42e6c7fc9af347d712a0800c8ba59bdc03de3fec (diff) | |
parent | 876042038f52c8e0e74950e3cb4f03f660375752 (diff) | |
download | AntennaPod-2243ca372e9fd7272d61913d63d000060a7af9f6.zip |
Merge pull request #5657 from ByteHamster/github-actions
Run tests on GitHub Actions instead of CircleCI
Diffstat (limited to '.github/workflows/checks.yml')
-rw-r--r-- | .github/workflows/checks.yml | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 000000000..d55817141 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,156 @@ +name: Checks + +on: + pull_request: + types: [opened, synchronize, reopened] + push: + branches: [master, develop] + +jobs: + code-style: + name: "Code Style" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + - name: Checkstyle + run: ./gradlew checkstyle + - name: Find PR Base Commit + id: vars + run: | + git fetch origin develop + echo "::set-output name=branchBaseCommit::$(git merge-base origin/develop HEAD)" + - name: Diff-Checkstyle + run: | + curl -s -L https://github.com/yangziwen/diff-checkstyle/releases/download/0.0.4/diff-checkstyle.jar > diff-checkstyle.jar + java -Dconfig_loc=config/checkstyle -jar diff-checkstyle.jar -c config/checkstyle/checkstyle-new-code.xml --git-dir . --base-rev ${{ steps.vars.outputs.branchBaseCommit }} + - name: XML of changed files + run: | + curl -s -L https://github.com/ByteHamster/android-xml-formatter/releases/download/1.1.0/android-xml-formatter.jar > android-xml-formatter.jar + git diff --name-only ${{ steps.vars.outputs.branchBaseCommit }} --diff-filter=AM | { grep "res/layout/" || true; } | xargs java -jar android-xml-formatter.jar + test $(git diff | wc -l) -eq 0 || (echo -e "\n\n===== Found XML code style violations! See output below how to fix them. =====\n\n" && git --no-pager diff --color=always && false) + + wrapper-validation: + name: "Gradle Wrapper Validation" + needs: code-style + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: gradle/wrapper-validation-action@v1 + + static-analysis: + name: "Static Code Analysis" + needs: code-style + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + - name: Lint + run: ./gradlew lintPlayRelease lintRelease + - name: SpotBugs + run: ./gradlew spotbugsPlayDebug spotbugsDebug 2>&1 | grep -i "spotbugs" + + unit-test: + name: "Unit Test: ${{ matrix.variant }}" + needs: code-style + runs-on: ubuntu-latest + strategy: + matrix: + include: + - variant: "PlayDebug" + execute-tests: true + upload-artifact: true + - variant: "PlayRelease" + execute-tests: true + upload-artifact: false + - variant: "FreeRelease" + execute-tests: false + upload-artifact: false + steps: + - uses: actions/checkout@v2 + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + - name: Create temporary release keystore + run: keytool -noprompt -genkey -v -keystore "app/keystore" -alias alias -storepass password -keypass password -keyalg RSA -validity 10 -dname "CN=antennapod.org, OU=dummy, O=dummy, L=dummy, S=dummy, C=US" + - name: Build + run: ./gradlew assemble${{ matrix.variant }} + - name: Test + if: matrix.execute-tests == true + run: ./gradlew test${{ matrix.variant }}UnitTest + - uses: actions/upload-artifact@v2 + if: matrix.upload-artifact == true + with: + name: app-play-debug.apk + path: app/build/outputs/apk/play/debug/app-play-debug.apk + + emulator-test: + name: "Emulator Test" + needs: code-style + runs-on: macOS-latest + env: + api-level: 27 + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '11' + - name: Build with Gradle + run: ./gradlew assemblePlayDebugAndroidTest + - name: Cache Gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} + - name: Cache AVD + uses: actions/cache@v2 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ env.api-level }} + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ env.api-level }} + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: false + script: echo "Generated AVD snapshot for caching." + - name: Android Emulator test + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ env.api-level }} + force-avd-creation: false + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: zsh .github/workflows/runEmulatorTests.sh + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: test-report + path: app/build/reports/androidTests/connected/flavors/PLAY/ |