summaryrefslogtreecommitdiff
path: root/.github/workflows/checks.yml
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2022-01-15 21:24:00 +0100
committerGitHub <noreply@github.com>2022-01-15 21:24:00 +0100
commit2243ca372e9fd7272d61913d63d000060a7af9f6 (patch)
tree094474d09f8b7badcb35f2c9ca86373a3b98fc95 /.github/workflows/checks.yml
parent42e6c7fc9af347d712a0800c8ba59bdc03de3fec (diff)
parent876042038f52c8e0e74950e3cb4f03f660375752 (diff)
downloadAntennaPod-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.yml156
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/