mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-26 15:18:19 +08:00
19500a8cd9
Use fully qualified R classes Fix or ignore deprecation Update github actions and ensure JDK 17 is used Add group for paparazzi Fixes Lint issues Fix Jacoco configuration
122 lines
4.4 KiB
YAML
122 lines
4.4 KiB
YAML
name: Code Quality Checks
|
|
|
|
on:
|
|
pull_request: { }
|
|
push:
|
|
branches: [ main, develop ]
|
|
|
|
# Enrich gradle.properties for CI/CD
|
|
env:
|
|
GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx3072m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -XX:MaxMetaspaceSize=1g" -Dkotlin.daemon.jvm.options="-Xmx2560m" -Dkotlin.incremental=false
|
|
CI_GRADLE_ARG_PROPERTIES: --stacktrace -PpreDexEnable=false --max-workers 2 --no-daemon
|
|
|
|
jobs:
|
|
check:
|
|
name: Project Check Suite
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Run code quality check suite
|
|
run: ./tools/check/check_code_quality.sh
|
|
|
|
# Knit for all the modules (https://github.com/Kotlin/kotlinx-knit)
|
|
knit:
|
|
name: Knit
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Use JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
|
java-version: '17'
|
|
- name: Configure gradle
|
|
uses: gradle/actions/setup-gradle@v3
|
|
with:
|
|
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
|
|
- name: Run knit
|
|
run: |
|
|
./gradlew knitCheck $CI_GRADLE_ARG_PROPERTIES
|
|
|
|
# Check the project: ktlint, detekt, lint
|
|
lint:
|
|
name: Android Linter
|
|
runs-on: ubuntu-latest
|
|
# Allow all jobs on main and develop. Just one per PR.
|
|
concurrency:
|
|
group: ${{ github.ref == 'refs/heads/main' && format('lint-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('lint-develop-{0}', github.sha) || format('lint-{0}', github.ref) }}
|
|
cancel-in-progress: true
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Use JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
|
java-version: '17'
|
|
- name: Configure gradle
|
|
uses: gradle/actions/setup-gradle@v3
|
|
with:
|
|
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
|
|
- name: Run ktlint
|
|
run: |
|
|
./gradlew ktlintCheck $CI_GRADLE_ARG_PROPERTIES --continue
|
|
- name: Run detekt
|
|
if: always()
|
|
run: |
|
|
./gradlew detekt $CI_GRADLE_ARG_PROPERTIES
|
|
- name: Run lint
|
|
# Not always, if ktlint or detekt fail, avoid running the long lint check.
|
|
run: |
|
|
./gradlew vector-app:lintGplayRelease $CI_GRADLE_ARG_PROPERTIES
|
|
./gradlew vector-app:lintFdroidRelease $CI_GRADLE_ARG_PROPERTIES
|
|
- name: Upload reports
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: linting-report
|
|
path: |
|
|
*/build/reports/**/*.*
|
|
- name: Prepare Danger
|
|
if: always()
|
|
run: |
|
|
npm install --save-dev @babel/core
|
|
npm install --save-dev @babel/plugin-transform-flow-strip-types
|
|
yarn add danger-plugin-lint-report --dev
|
|
- name: Danger lint
|
|
if: always()
|
|
uses: danger/danger-js@11.2.6
|
|
with:
|
|
args: "--dangerfile ./tools/danger/dangerfile-lint.js"
|
|
env:
|
|
DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
|
|
# Fallback for forks
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Gradle dependency analysis using https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin
|
|
dependency-analysis:
|
|
name: Dependency analysis
|
|
runs-on: ubuntu-latest
|
|
# Allow all jobs on main and develop. Just one per PR.
|
|
concurrency:
|
|
group: ${{ github.ref == 'refs/heads/main' && format('dep-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('dep-develop-{0}', github.sha) || format('dep-{0}', github.ref) }}
|
|
cancel-in-progress: true
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Use JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
|
java-version: '17'
|
|
- name: Configure gradle
|
|
uses: gradle/actions/setup-gradle@v3
|
|
with:
|
|
cache-read-only: ${{ github.ref != 'refs/heads/develop' }}
|
|
- name: Dependency analysis
|
|
run: ./gradlew dependencyCheckAnalyze $CI_GRADLE_ARG_PROPERTIES
|
|
- name: Upload dependency analysis
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: dependency-analysis
|
|
path: build/reports/dependency-check-report.html
|