name: Java CI on: push: branches: [ master ] jobs: build-and-analyze: name: Build and Run Sonar analysis on JDK 21 runs-on: ubuntu-22.04 steps: - name: Checkout Code uses: actions/checkout@v4 with: # Disabling shallow clone for improving relevancy of SonarQube reporting fetch-depth: 0 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: 'maven' - name: Cache local Maven repository uses: actions/cache@v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- # Cache Sonar packages which are used to run analysis and collect metrics - name: Cache SonarCloud packages uses: actions/cache@v4 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar # Some tests need screen access - name: Install xvfb run: sudo apt-get install -y xvfb - name: Build with Maven and run SonarQube analysis run: xvfb-run ./mvnw clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar env: # These two env variables are needed for sonar analysis GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}