Skip to content

Quality

Quality #1265

Workflow file for this run

name: Quality
on:
merge_group:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
android-lint:
name: Android Lint
runs-on: ubuntu-latest
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
strategy:
matrix:
include:
- module: 'pillarbox-demo'
task: 'lintProdDebug'
- module: 'pillarbox-demo-tv'
task: 'lintProdDebug'
- module: 'pillarbox-player-testutils'
task: 'lintDebug'
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Run Android Lint
run: ./gradlew :${{ matrix.module }}:${{ matrix.task }}
- name: Upload Android Lint results
uses: github/codeql-action/upload-sarif@v3
if: success() || failure()
with:
sarif_file: build/reports/android-lint/${{ matrix.module }}.sarif
category: android-lint-${{ matrix.module }}
detekt:
name: Detekt
runs-on: ubuntu-latest
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Run Detekt
run: ./gradlew detekt
- name: Upload Detekt results
uses: github/codeql-action/upload-sarif@v3
if: success() || failure()
with:
sarif_file: build/reports/detekt/
category: detekt
dependency-analysis:
name: Dependency Analysis
runs-on: ubuntu-latest
permissions:
pull-requests: write
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Run Dependency Analysis
id: analyse_dependencies
continue-on-error: true
run: ./gradlew buildHealth
- name: Comment Analysis Report
if: ${{ github.event_name == 'pull_request' }}
uses: marocchino/sticky-pull-request-comment@v2
with:
path: build/reports/dependency-analysis/build-health-report.txt
delete: ${{ steps.analyse_dependencies.outcome == 'success' }}
- name: Dependency Analysis failed
if: ${{ steps.analyse_dependencies.outcome == 'failure' }}
run: |
echo "::error ::Dependency Analysis failed."
exit 1
unit-test:
name: Unit Tests
runs-on: ubuntu-latest
permissions:
pull-requests: write
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Run Unit Tests
run: ./gradlew :build-logic:plugins:koverXmlReport koverXmlReportDebug
- name: Report Code Coverage
if: ${{ github.event_name == 'pull_request' }}
uses: madrapps/jacoco-report@v1.7.2
with:
paths: ${{ github.workspace }}/**/build/reports/kover/**.xml
token: ${{ github.token }}
min-coverage-overall: 0
min-coverage-changed-files: 0
update-comment: true
title: Code Coverage
pass-emoji: 🟢
fail-emoji: 🔴
publish-to-maven-local:
name: Publish to Maven local
runs-on: ubuntu-latest
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Publish to Maven local
run: ./gradlew publishToMavenLocal
generate-documentation:
name: Generate documentation
runs-on: ubuntu-latest
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Generate documentation
run: ./gradlew :dokkaGenerate
android-tests:
name: Android Tests
runs-on: ubuntu-latest
env:
USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
strategy:
matrix:
api-level: [ 26 ]
steps:
- name: Enable KVM
# https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/
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: Checkout
uses: actions/checkout@v5
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
- name: Run Android Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
# Supported tasks per module
# :pillarbox-analytics:connectedDebugAndroidTest
# :pillarbox-core-business:connectedDebugAndroidTest
# :pillarbox-player:connectedDebugAndroidTest
# :pillarbox-ui:connectedDebugAndroidTest
script: ./gradlew :pillarbox-player:connectedDebugAndroidTest