Add option to enable sleep timer based on current time #1315
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Checks | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened] | |
push: | |
branches: [master, develop] | |
jobs: | |
code-style: | |
name: "Code Style" | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Checkstyle | |
run: | | |
curl -s -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-10.3.1/checkstyle-10.3.1-all.jar > checkstyle.jar | |
find . -name "*\.java" | xargs java -Dconfig_loc=config/checkstyle -jar checkstyle.jar -c config/checkstyle/checkstyle.xml | |
- 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-check/releases/download/0.0.7/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 | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: gradle/wrapper-validation-action@v1 | |
static-analysis: | |
name: "Static Code Analysis" | |
needs: code-style | |
runs-on: ubuntu-latest | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache Gradle | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: gradle-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} | |
- name: Lint :app module recursively | |
run: ./gradlew :app:lintPlayRelease | |
- 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 | |
timeout-minutes: 45 | |
strategy: | |
matrix: | |
include: | |
- variant: "PlayDebug" | |
base-variant: "Debug" | |
execute-tests: true | |
upload-artifact: true | |
- variant: "PlayRelease" | |
base-variant: "Release" | |
execute-tests: true | |
upload-artifact: false | |
- variant: "FreeRelease" | |
base-variant: "Release" | |
execute-tests: false | |
upload-artifact: false | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache Gradle | |
uses: actions/cache@v3 | |
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 test${{ matrix.base-variant }}UnitTest | |
- uses: actions/upload-artifact@v3 | |
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 | |
timeout-minutes: 45 | |
env: | |
api-level: 30 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '11' | |
- name: Cache Gradle | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: gradle-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} | |
- name: Build with Gradle | |
run: ./gradlew assemblePlayDebugAndroidTest | |
- name: Cache AVD | |
uses: actions/cache@v3 | |
id: avd-cache | |
with: | |
path: | | |
~/.android/avd/* | |
~/.android/adb* | |
key: avd-${{ hashFiles('.github/workflows/*') }} | |
- 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 }} | |
target: aosp_atd | |
channel: canary | |
force-avd-creation: false | |
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none | |
disable-animations: true | |
script: echo "Generated AVD snapshot for caching." | |
- name: Android Emulator test | |
uses: reactivecircus/android-emulator-runner@v2 | |
with: | |
api-level: ${{ env.api-level }} | |
target: aosp_atd | |
channel: canary | |
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@v3 | |
if: failure() | |
with: | |
name: test-report | |
path: app/build/reports/androidTests/connected/flavors/PLAY/ |