diff --git a/.github/workflows/content-pr-check.yml b/.github/workflows/content-pr-check.yml new file mode 100644 index 000000000..129e3bb54 --- /dev/null +++ b/.github/workflows/content-pr-check.yml @@ -0,0 +1,99 @@ +name: Pull Request Checks + +on: + pull_request: + branches: + - '*' + +jobs: + test-and-quality: + runs-on: ubuntu-latest + 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 }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # Important for SonarQube to get full history + + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + + - name: Cache Maven packages + uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Build and Run Tests + run: | + mvn clean install -DskipTests \ + -DCLOUD_STORE_GROUP_ID=${CLOUD_STORE_GROUP_ID} \ + -DCLOUD_STORE_ARTIFACT_ID=${CLOUD_STORE_ARTIFACT_ID} \ + -DCLOUD_STORE_VERSION=${CLOUD_STORE_VERSION} + cd content-api/content-service/ + 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 Test Results + if: always() + uses: actions/upload-artifact@v4 + with: + name: test-results + path: 'content-api/content-service/target/surefire-reports/*.xml' + + - name: Publish Test Results + if: always() + uses: dorny/test-reporter@v1 + with: + name: Test Results + path: content-api/content-service/target/surefire-reports/*.xml + reporter: java-junit + fail-on-error: true + + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + java-version: '17' + distribution: 'temurin' + + - name: SonarCloud Analysis + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + working-directory: content-api/content-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=vinodbhorge \ + -Dsonar.organization=vinodbhorge \ + -Dsonar.host.url=https://sonarcloud.io \ + -Dsonar.coverage.jacoco.xmlReportPaths=content-api/content-service/target/site/jacoco/jacoco.xml \ + -Dsonar.token=${SONAR_TOKEN} + + + - 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=${process.env.GITHUB_REPOSITORY.replace('/', '_')}`; + const message = `### Quality Gate Results + Check the detailed SonarQube analysis at: ${sonarUrl}`; + 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