Skip to content

Commit

Permalink
split jobs into files;
Browse files Browse the repository at this point in the history
remove unit tests execution in snapshot tests job.
  • Loading branch information
lucasmodesto committed Jul 21, 2024
1 parent 89189e9 commit 3bb0adc
Show file tree
Hide file tree
Showing 6 changed files with 205 additions and 155 deletions.
167 changes: 12 additions & 155 deletions .github/workflows/android-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,163 +11,20 @@ concurrency:
cancel-in-progress: true

jobs:

build:
name: "Build APK"
runs-on: ubuntu-latest

permissions:
contents: write
pull-requests: write

timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Check build-logic
run: ./gradlew check -p build-logic

- name: Build APK
run: ./gradlew app:assembleDebug

test:
name: "Unit and Snapshot tests"
runs-on: ubuntu-latest

permissions:
contents: write
pull-requests: write

timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4
with:
lfs: true

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Snapshot tests
run: ./gradlew verifyPaparazziDemoDebug

- name: Unit tests
run: ./gradlew testDemoDebugUnitTest

android_test:
name: "Android tests and coverage report"
runs-on: ubuntu-latest
timeout-minutes: 55
strategy:
matrix:
api-level: [ 23, 33 ]

steps:
# From https://github.com/android/nowinandroid/pull/1219/files to fix flaky emulator start
# Issue https://github.com/ReactiveCircus/android-emulator-runner/issues/324#issuecomment-2009351180
- name: Delete unnecessary tools 🔧
uses: jlumbroso/free-disk-space@v1.3.1
with:
android: false # Don't remove Android tools
tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY"
dotnet: true # rm -rf /usr/share/dotnet
haskell: true # rm -rf /opt/ghc...
swap-storage: true # rm -f /mnt/swapfile (4GiB)
docker-images: false # Takes 16s, enable if needed in the future
large-packages: false # includes google-cloud-sdk and it's slow

- name: Checkout
uses: actions/checkout@v4

- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Gradle cache
uses: gradle/actions/setup-gradle@v3

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Build project before running emulator
run: ./gradlew packageDemoDebug packageDemoDebugAndroidTest

- name: Run android tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disable-animations: true
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -grpc 8554 -grpc-use-jwt
disk-size: 6000M
heap-size: 600M
script: ./gradlew connectedDemoDebugAndroidTest

- name: Run unit tests for coverage report
if: matrix.api-level == 33
run: ./gradlew testDemoDebugUnitTest
uses: ./.github/workflows/jobs/build.yml

- name: Generate JaCoCo coverage report
if: matrix.api-level == 33
run: ./gradlew createDemoDebugJacocoReport
snapshot_test:
uses: ./.github/workflows/jobs/snapshot_tests.yml

- name: Display local test coverage (only API 33)
if: matrix.api-level == 33
id: jacoco
uses: madrapps/jacoco-report@v1.6.1
with:
title: Combined test coverage report
min-coverage-overall: 40
min-coverage-changed-files: 60
paths: |
${{ github.workspace }}/**/build/reports/jacoco/**/*Report.xml
token: ${{ secrets.GITHUB_TOKEN }}
unit_tests:
uses: ./.github/workflows/jobs/unit_tests.yml

- name: Upload local coverage reports (only API 33)
if: matrix.api-level == 33
uses: actions/upload-artifact@v4
with:
name: coverage-reports
if-no-files-found: error
compression-level: 1
overwrite: false
path: '**/build/reports/jacoco/'
android_tests:
uses: ./.github/workflows/jobs/android_tests.yml

- name: Upload test reports
if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports-${{ matrix.api-level }}
path: '**/build/reports/androidTests'
coverage_report:
uses: ./.github/workflows/jobs/coverage_report.yml
needs:
- unit_tests
- android_tests
60 changes: 60 additions & 0 deletions .github/workflows/jobs/android_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: "Android Tests"
runs-on: ubuntu-latest
timeout-minutes: 55
strategy:
matrix:
api-level: [23, 33]

steps:
- name: Delete unnecessary tools 🔧
uses: jlumbroso/free-disk-space@v1.3.1
with:
android: false
tool-cache: true
dotnet: true
haskell: true
swap-storage: true
docker-images: false
large-packages: false

- name: Checkout
uses: actions/checkout@v4

- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Gradle cache
uses: gradle/actions/setup-gradle@v3

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Build project before running emulator
run: ./gradlew packageDemoDebug packageDemoDebugAndroidTest

- name: Run Android tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disable-animations: true
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -grpc 8554 -grpc-use-jwt
disk-size: 6000M
heap-size: 600M
script: ./gradlew connectedDemoDebugAndroidTest

- name: Upload Android test reports
if: always()
uses: actions/upload-artifact@v4
with:
name: android-test-reports-${{ matrix.api-level }}
path: '**/build/reports/androidTests'
30 changes: 30 additions & 0 deletions .github/workflows/jobs/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: "Build APK"
runs-on: ubuntu-latest

permissions:
contents: write
pull-requests: write

timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Check build-logic
run: ./gradlew check -p build-logic

- name: Build debug APK
run: ./gradlew app:assembleDebug
48 changes: 48 additions & 0 deletions .github/workflows/jobs/coverage_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: "Coverage Report"
runs-on: ubuntu-latest

needs:
- unit_tests
- android_tests

if: always()

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

# Adjust paths and commands as per your project's Jacoco configuration
- name: Generate JaCoCo coverage report
run: ./gradlew createDemoDebugJacocoReport

- name: Display local test coverage
id: jacoco
uses: madrapps/jacoco-report@v1.6.1
with:
title: Combined test coverage report
min-coverage-overall: 40
min-coverage-changed-files: 60
paths: |
${{ github.workspace }}/**/build/reports/jacoco/**/*Report.xml
token: ${{ secrets.GITHUB_TOKEN }}

- name: Upload coverage reports
uses: actions/upload-artifact@v4
with:
name: coverage-reports
if-no-files-found: error
compression-level: 1
overwrite: false
path: '**/build/reports/jacoco/'

- name: Upload test reports
uses: actions/upload-artifact@v4
with:
name: test-reports
path: '**/build/reports/androidTests'
29 changes: 29 additions & 0 deletions .github/workflows/jobs/snapshot_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: "Snapshot tests"
runs-on: ubuntu-latest

permissions:
contents: write
pull-requests: write

timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4
with:
lfs: true

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v3

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Snapshot tests
run: ./gradlew verifyPaparazziDemoDebug
26 changes: 26 additions & 0 deletions .github/workflows/jobs/unit_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: "Unit Tests"
runs-on: ubuntu-latest
timeout-minutes: 30

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17

- name: Make gradlew executable
run: chmod +x ./gradlew

- name: Run unit tests
run: ./gradlew testDemoDebugUnitTest

- name: Upload unit test reports
if: always()
uses: actions/upload-artifact@v4
with:
name: unit-test-reports
path: '**/build/reports/tests'

0 comments on commit 3bb0adc

Please sign in to comment.