From 08d3704c27eec40b1169ce33e424638a66baa0a4 Mon Sep 17 00:00:00 2001 From: vinodbhorge Date: Fri, 6 Jun 2025 17:27:05 +0530 Subject: [PATCH] Updated the Code-quality action to be also done for taxonomy service. --- .github/workflows/Code-Quality-check.yml | 148 ++++++++++++++++++----- 1 file changed, 121 insertions(+), 27 deletions(-) diff --git a/.github/workflows/Code-Quality-check.yml b/.github/workflows/Code-Quality-check.yml index c10f757e4..5b5d9bf96 100644 --- a/.github/workflows/Code-Quality-check.yml +++ b/.github/workflows/Code-Quality-check.yml @@ -11,14 +11,21 @@ permissions: checks: write statuses: write +env: + CLOUD_STORE_GROUP_ID: ${{ vars.CLOUD_STORE_GROUP_ID }} + CLOUD_STORE_ARTIFACT_ID: ${{ vars.CLOUD_STORE_ARTIFACT_ID }} + CLOUD_STORE_VERSION: ${{ vars.CLOUD_STORE_VERSION }} + jobs: - test-and-quality: + build: runs-on: ubuntu-latest + outputs: + maven_cache_key: ${{ runner.os }}-maven-${{ steps.cache.outputs.cache-hit }} steps: - uses: actions/checkout@v3 with: - fetch-depth: 0 # Important for SonarQube to get full history - + fetch-depth: 0 + - name: Set up JDK 11 uses: actions/setup-java@v3 with: @@ -34,67 +41,154 @@ jobs: restore-keys: | ${{ runner.os }}-maven- - - name: Build and Run Tests + - name: Build Knowledge Platform run: | mvn clean install -DskipTests=true \ - -DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \ - -DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \ - -DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }} - echo "Running the test cases" - cd content-api/content-service/ + -DCLOUD_STORE_GROUP_ID=${CLOUD_STORE_GROUP_ID} \ + -DCLOUD_STORE_ARTIFACT_ID=${CLOUD_STORE_ARTIFACT_ID} \ + -DCLOUD_STORE_VERSION=${CLOUD_STORE_VERSION} + + test-content: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + + - name: Run Content Service Tests + working-directory: content-api/content-service/ + run: | mvn clean test org.jacoco:jacoco-maven-plugin:0.8.8:prepare-agent test org.jacoco:jacoco-maven-plugin:0.8.8:report \ - -DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \ - -DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \ - -DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }} + -DCLOUD_STORE_GROUP_ID=${CLOUD_STORE_GROUP_ID} \ + -DCLOUD_STORE_ARTIFACT_ID=${CLOUD_STORE_ARTIFACT_ID} \ + -DCLOUD_STORE_VERSION=${CLOUD_STORE_VERSION} - - name: Upload Test Results + - name: Upload Content Test Results if: always() uses: actions/upload-artifact@v4 with: - name: test-results + name: content-test-results path: 'content-api/content-service/target/surefire-reports/*.xml' - - name: Publish Test Results + - name: Publish Content Test Results if: always() uses: dorny/test-reporter@v1 with: - name: Test Results + name: Content Test Results path: content-api/content-service/target/surefire-reports/*.xml reporter: java-junit fail-on-error: true + test-taxonomy: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + + - name: Run Taxonomy Tests + working-directory: taxonomy-api/taxonomy-service/ + run: | + mvn clean test org.jacoco:jacoco-maven-plugin:0.8.8:prepare-agent test org.jacoco:jacoco-maven-plugin:0.8.8:report \ + -DCLOUD_STORE_GROUP_ID=${CLOUD_STORE_GROUP_ID} \ + -DCLOUD_STORE_ARTIFACT_ID=${CLOUD_STORE_ARTIFACT_ID} \ + -DCLOUD_STORE_VERSION=${CLOUD_STORE_VERSION} + + - name: Upload Taxonomy Test Results + if: always() + uses: actions/upload-artifact@v4 + with: + name: taxonomy-test-results + path: 'taxonomy-api/taxonomy-service/target/surefire-reports/*.xml' + + - name: Publish Taxonomy Test Results + if: always() + uses: dorny/test-reporter@v1 + with: + name: Taxonomy Test Results + path: taxonomy-api/taxonomy-service/target/surefire-reports/*.xml + reporter: java-junit + fail-on-error: true + + sonar-analysis-content: + needs: test-content + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 - name: Set up JDK 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - - - name: SonarCloud Analysis + cache: 'maven' + - name: Run SonarCloud Analysis for Content env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} working-directory: content-api/content-service run: | mvn sonar:sonar \ - -DCLOUD_STORE_GROUP_ID=${{ vars.CLOUD_STORE_GROUP_ID }} \ - -DCLOUD_STORE_ARTIFACT_ID=${{ vars.CLOUD_STORE_ARTIFACT_ID }} \ - -DCLOUD_STORE_VERSION=${{ vars.CLOUD_STORE_VERSION }} \ + -DCLOUD_STORE_GROUP_ID=${CLOUD_STORE_GROUP_ID} \ + -DCLOUD_STORE_ARTIFACT_ID=${CLOUD_STORE_ARTIFACT_ID} \ + -DCLOUD_STORE_VERSION=${CLOUD_STORE_VERSION} \ -Dsonar.projectKey=Sunbird-Knowlg_knowledge-platform \ -Dsonar.organization=sunbird-knowlg-1 \ -Dsonar.host.url=https://sonarcloud.io \ -Dsonar.coverage.jacoco.xmlReportPaths=content-api/content-service/target/site/jacoco/jacoco.xml + sonar-analysis-taxonomy: + needs: test-taxonomy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + - name: Run SonarCloud Analysis for Taxonomy + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + working-directory: taxonomy-api/taxonomy-service + run: | + mvn sonar:sonar \ + -DCLOUD_STORE_GROUP_ID=${CLOUD_STORE_GROUP_ID} \ + -DCLOUD_STORE_ARTIFACT_ID=${CLOUD_STORE_ARTIFACT_ID} \ + -DCLOUD_STORE_VERSION=${CLOUD_STORE_VERSION} \ + -Dsonar.projectKey=Sunbird-Knowlg_knowledge-platform \ + -Dsonar.organization=sunbird-knowlg-1 \ + -Dsonar.host.url=https://sonarcloud.io \ + -Dsonar.coverage.jacoco.xmlReportPaths=taxonomy-api/taxonomy-service/target/site/jacoco/jacoco.xml + comment-pr: + needs: [sonar-analysis-content, sonar-analysis-taxonomy] + if: github.event_name == 'pull_request' + runs-on: ubuntu-latest + steps: - name: Comment PR with SonarQube Results uses: actions/github-script@v6 - if: github.event_name == 'pull_request' && always() with: script: | - const sonarUrl = `https://sonarcloud.io/dashboard?id=Sunbird-Knowlg_knowledge-platform`; - const message = `### Quality Gate Results - Check the detailed SonarQube analysis at: ${sonarUrl}`; + const message = `### SonarCloud Analysis Results 🔍 + + #### Quality Gate Results for Services: + - [Service Analysis](https://sonarcloud.io/dashboard?id=Sunbird-Knowlg_knowledge-platform) + + Please review the analysis results for each service. Ensure all quality gates are passing before merging.`; + github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: message - }); \ No newline at end of file + });