Skip to content

Feature: Droidcon 2024 #364

Feature: Droidcon 2024

Feature: Droidcon 2024 #364

Workflow file for this run

name: branch
on:
pull_request:
branches: [ main ]
env:
APP_SIGN_KEYSTORE_PATH: /tmp/keystore
CACHE_BUNDLER: ~/.bundler
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
api-level: [ 30 ]
steps:
- name: Write key file
env:
AUTH: ${{ secrets.KEYSTORE }}
run: echo $AUTH | base64 --decode > /tmp/keystore
- name: Checkout the Repository
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
- name: Cache gradle
uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Bundler cache
uses: actions/cache@v1
with:
path: $CACHE_BUNDLER
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
- name: Install Dependencies
run: gem install bundler && bundle install
- name: Run ktlintFormat
uses: maierj/[email protected]
with:
lane: ktlintFormat
skip-tracking: false
subdirectory: fastlane
bundle-install-path: CACHE_BUNDLER
- name: Run ktlintCheck
uses: maierj/[email protected]
with:
lane: ktlintCheck
skip-tracking: false
subdirectory: fastlane
bundle-install-path: CACHE_BUNDLER
- name: Run detekt
uses: maierj/[email protected]
with:
lane: detekt
skip-tracking: false
subdirectory: fastlane
bundle-install-path: CACHE_BUNDLER
- name: Run tests
uses: maierj/[email protected]
with:
lane: test
skip-tracking: false
subdirectory: fastlane
bundle-install-path: CACHE_BUNDLER
- name: Run Debug Build
uses: maierj/[email protected]
with:
lane: branch
options: '{ "conf": "debug" }'
skip-tracking: false
subdirectory: fastlane
bundle-install-path: CACHE_BUNDLER
- name: Ensure android directory exists
run: mkdir -p android
- name: Setup Gradle cache
uses: gradle/gradle-build-action@v2
- name: List root diretory contents
run: ls -la
- name: List android directory contents
run: ls -la android
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Run local tests for the combined coverage report (only API 30)
if: matrix.api-level == 30
run: ./gradlew testDebugUnitTest
- name: Generate coverage reports for Debug variants (only API 30)
if: matrix.api-level == 30
run: ./gradlew createDebugCombinedCoverageReport
- name: Upload App module test coverage report to Codecov
if: matrix.api-level == 30 # Only upload coverage on API level 30
working-directory: android
run: bash <(curl -s https://codecov.io/bash) -F app -f "**/build/reports/jacoco/"
- name: Run DataSource remote module unit and instrumentation tests and generate coverage report
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
force-avd-creation: true
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./gradlew :datasource:remote:clean :datasource:remote:createDebugCombinedCoverageReport --stacktrace
- name: Upload DataSource module test coverage report to Codecov
if: matrix.api-level == 30 # Only upload coverage on API level 30
run: bash <(curl -s https://codecov.io/bash) -F datasource -f "**/build/reports/jacoco/"