itachi1706/SingBuses

View on GitHub
.github/workflows/sonarcloud.yml

Summary

Maintainability
Test Coverage
name: SonarCloud
on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, synchronize, reopened]
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4.1.7
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: 17
          cache: 'gradle'
      - name: Copy secure values
        run: |
          echo $GOOGLE_SERVICES > ./app/google-services.json
          echo $SECRET_FILE > ./secrets.properties
        env:
          GOOGLE_SERVICES: ${{ secrets.GOOGLE_SERVICES }}
          SECRET_FILE: ${{ secrets.SECRET_FILE }}
      - name: Make Gradle executable
        run: chmod +x gradlew
      - name: Cache SonarCloud packages
        uses: actions/cache@v4
        with:
          path: ~/.sonar/cache
          key: ${{ runner.os }}-sonar
          restore-keys: ${{ runner.os }}-sonar
      - name: Cache Gradle packages
        uses: actions/cache@v4
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
          restore-keys: ${{ runner.os }}-gradle
      - name: Run Lint first
        run: ./gradlew lint
      - name: Generate Tests and Coverage Report
        run: ./gradlew build test createDebugUnitTestCoverageReport
      - name: Manipulate the coverage file
        run: |
          mkdir -p build/reports/jacoco/test
          mkdir -p app/build/reports/jacoco/test
          cp app/build/reports/coverage/test/debug/report.xml app/build/reports/jacoco/test/jacocoTestReport.xml
          cp app/build/reports/coverage/test/debug/report.xml build/reports/jacoco/test/jacocoTestReport.xml
      - name: Build and analyze
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        run: ./gradlew sonarqube --info