From 22340e6645cf5b1c858972e7a0bd2b0db1fd4b17 Mon Sep 17 00:00:00 2001 From: asteriskzie Date: Sun, 26 May 2024 10:24:46 +0700 Subject: [PATCH] Change sonarcloud.yml --- .github/workflows/sonarcloud.yml | 92 ++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 178ffd1..92aa535 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -1,4 +1,4 @@ -name: SonarCloud analysis +name: SonarCloud on: push: @@ -9,64 +9,74 @@ on: pull_request: types: [opened, synchronize, reopened] -permissions: - pull-requests: read # allows SonarCloud to decorate PRs with analysis results - jobs: - Analysis: + build: + name: Build, analyze, and test runs-on: ubuntu-latest - services: + services: postgres: image: postgres:latest + ports: + - 5432:5432 + options: >- + --health-cmd "pg_isready -U postgres" + --health-interval 10s + --health-timeout 5s + --health-retries 5 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: snackscription_review - ports: - - 5432:5432 - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - + steps: - - name: Check out the Git repository - uses: actions/checkout@v4 - - - name: Set up Java toolchain + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up JDK 21 uses: actions/setup-java@v4 with: distribution: "temurin" java-version: "21" cache: "gradle" - - name: Build - run: ./gradlew build + - name: Cache SonarCloud packages + uses: actions/cache@v3 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - name: Cache Gradle packages + uses: actions/cache@v3 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle + + - name: Wait for PostgreSQL + run: | + for i in {1..30}; do + if pg_isready -h localhost -p 5432 -U postgres; then + echo "PostgreSQL is up and running" + break + fi + echo "Waiting for PostgreSQL..." + sleep 1 + done + if ! pg_isready -h localhost -p 5432 -U postgres; then + echo "PostgreSQL failed to start" && exit 1 + fi - - name: Analyze with SonarCloud - # You can pin the exact commit or the version. - # uses: SonarSource/sonarcloud-github-action@de2e56b42aa84d0b1c5b622644ac17e505c9a049 - uses: SonarSource/sonarcloud-github-action@master - + - name: Build and analyze env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Generate a token on Sonarcloud.io, add it to the secrets of this repo with the name SONAR_TOKEN (Settings > Secrets > Actions > add new repository secret) + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SPRING_DATASOURCE_URL: jdbc:postgresql://localhost:5432/snackscription_review SPRING_DATASOURCE_USERNAME: postgres SPRING_DATASOURCE_PASSWORD: postgres - with: - # Additional arguments for the sonarcloud scanner - args: - # Unique keys of your project and organization. You can find them in SonarCloud > Information (bottom-left menu) - # mandatory - -Dsonar.projectKey=ADPRO-C11_snackscription-review - -Dsonar.organization=adpro-c11 - -Dsonar.java.binaries=. - -Dsonar.sources=src/main/java - -Dsonar.tests=src/test/java - # Comma-separated paths to directories containing main source files. - #-Dsonar.sources= # optional, default is project base directory - # When you need the analysis to take place in a directory other than the one from which it was launched - #-Dsonar.projectBaseDir= # optional, default is . - # Comma-separated paths to directories containing test source files. - #-Dsonar.tests= # optional. For more info about Code Coverage, please refer to https://docs.sonarcloud.io/enriching/test-coverage/overview/ - # Adds more detail to both client and server-side analysis logs, activating DEBUG mode for the scanner, and adding client-side environment variables and system properties to the server-side log of analysis report processing. - #-Dsonar.verbose= # optional, default is false \ No newline at end of file + # JWT_SECRET: ${{ secrets.JWT_SECRET }} + run: | + chmod +x ./gradlew + ./gradlew build sonar --info \ No newline at end of file