From 0a0523b736433843c5e9eedf5e800382dc54f7ea Mon Sep 17 00:00:00 2001 From: Thumilan Mikunthan Date: Wed, 20 Nov 2024 10:32:45 +0530 Subject: [PATCH 1/3] [Automated] Add Codecov generator configuration --- .github/workflows/coverage-generator.yml | 177 +++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 .github/workflows/coverage-generator.yml diff --git a/.github/workflows/coverage-generator.yml b/.github/workflows/coverage-generator.yml new file mode 100644 index 0000000..88e3db0 --- /dev/null +++ b/.github/workflows/coverage-generator.yml @@ -0,0 +1,177 @@ +name: Code Coverage Generator + +on: + workflow_dispatch: + schedule: + # Daily 22:00 UTC (3.30 AM SL time). + - cron: '00 22 * * *' + +jobs: + build-source: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Adopt JDK 11 + uses: actions/setup-java@v4 + with: + java-version: 11 + distribution: "adopt" + + - name: Build with Maven + run: | + mvn clean install -U -B -Dmaven.test.skip=true + + - name: Cache source code + uses: actions/cache@v4 + with: + path: . + key: ${{ runner.os }}-source-${{ github.sha }} + + oidc-conformance-report: + needs: build-source + runs-on: ubuntu-latest + + steps: + - name: Restore source code + uses: actions/cache@v4 + with: + path: . + key: ${{ runner.os }}-source-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-source- + + - name: Get the latest Jacoco report URL + id: get-artifact-url-oidc + run: | + GITHUB_API_URL="https://api.github.com" + OWNER="wso2" + REPO="product-is" + WORKFLOW_ID="oidc-conformance-test.yml" + GITHUB_TOKEN="${{ secrets.GITHUB_TOKEN }}" + + # Get the latest successful workflow run + WORKFLOW_RUNS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "$GITHUB_API_URL/repos/$OWNER/$REPO/actions/workflows/$WORKFLOW_ID/runs?status=success&per_page=1") + RUN_ID=$(echo $WORKFLOW_RUNS | jq -r '.workflow_runs[0].id') + + if [ "$RUN_ID" == "null" ]; then + echo "No successful workflow runs found" + exit 1 + fi + + # Get the artifacts for the workflow run + ARTIFACTS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "$GITHUB_API_URL/repos/$OWNER/$REPO/actions/runs/$RUN_ID/artifacts") + ARTIFACT_URL=$(echo $ARTIFACTS | jq -r '.artifacts[] | select(.name == "jacoco-xml") | .archive_download_url') + + if [ "$ARTIFACT_URL" == "null" ]; then + echo "Artifact not found" + exit 1 + fi + + echo "::set-output name=artifact-url::$ARTIFACT_URL" + + - name: Download latest Jacoco report + run: | + curl -L -o artifact-oidc.zip \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + ${{ steps.get-artifact-url-oidc.outputs.artifact-url }} + + - name: Unzip Jacoco report + run: | + unzip artifact-oidc.zip -d ./artifacts-oidc + + - name: Upload coverage reports to Codecov for OIDC + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./artifacts-oidc/jacoco.xml + flags: conformance-oidc + disable_search: true + + fapi-conformance-report: + needs: build-source + runs-on: ubuntu-latest + + steps: + - name: Restore source code + uses: actions/cache@v4 + with: + path: . + key: ${{ runner.os }}-source-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-source- + + - name: Get the latest Jacoco report URL + id: get-artifact-url-fapi + run: | + GITHUB_API_URL="https://api.github.com" + OWNER="wso2" + REPO="product-is" + WORKFLOW_ID="fapi-oidc-conformance-test.yml" + GITHUB_TOKEN="${{ secrets.GITHUB_TOKEN }}" + + # Get the latest successful workflow run + WORKFLOW_RUNS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "$GITHUB_API_URL/repos/$OWNER/$REPO/actions/workflows/$WORKFLOW_ID/runs?status=success&per_page=1") + RUN_ID=$(echo $WORKFLOW_RUNS | jq -r '.workflow_runs[0].id') + + if [ "$RUN_ID" == "null" ]; then + echo "No successful workflow runs found" + exit 1 + fi + + # Get the artifacts for the workflow run + ARTIFACTS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" "$GITHUB_API_URL/repos/$OWNER/$REPO/actions/runs/$RUN_ID/artifacts") + ARTIFACT_URL=$(echo $ARTIFACTS | jq -r '.artifacts[] | select(.name == "jacoco-xml") | .archive_download_url') + + if [ "$ARTIFACT_URL" == "null" ]; then + echo "Artifact not found" + exit 1 + fi + + echo "::set-output name=artifact-url::$ARTIFACT_URL" + + - name: Download the latest Jacoco report + run: | + curl -L -o artifact-fapi.zip \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + ${{ steps.get-artifact-url-fapi.outputs.artifact-url }} + + - name: Unzip Jacoco report + run: | + unzip artifact-fapi.zip -d ./artifacts-fapi + + - name: Upload coverage reports to Codecov for FAPI + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./artifacts-fapi/jacoco.xml + flags: conformance-fapi + disable_search: true + + integration-test-report: + needs: build-source + runs-on: ubuntu-latest + + steps: + - name: Restore source code + uses: actions/cache@v4 + with: + path: . + key: ${{ runner.os }}-source-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-source- + + - name: Download integration Jacoco XML report + run: | + mkdir artifacts-integration + curl -L -o ./artifacts-integration/jacoco.xml https://wso2.org/jenkins/job/products/job/product-is/lastSuccessfulBuild/artifact/modules/integration/tests-integration/tests-backend/target/jacoco/coverage/jacoco.xml + + - name: Upload coverage reports to Codecov for integration tests + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./artifacts-integration/jacoco.xml + flags: integration + disable_search: true From 981a37e3a9a6dfb813fdcd6ce20827ce69f6e239 Mon Sep 17 00:00:00 2001 From: Thumilan Mikunthan Date: Wed, 20 Nov 2024 10:32:47 +0530 Subject: [PATCH 2/3] Update PR builder with flag --- .github/workflows/pr-builder.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pr-builder.yml b/.github/workflows/pr-builder.yml index f901a8f..a10f04a 100644 --- a/.github/workflows/pr-builder.yml +++ b/.github/workflows/pr-builder.yml @@ -45,3 +45,4 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} files: components/**/target/site/jacoco/jacoco.xml + flags: unit From 5eda4d887a34b7a740d87b3469fdd485a34a3649 Mon Sep 17 00:00:00 2001 From: Thumilan Mikunthan Date: Wed, 20 Nov 2024 10:32:48 +0530 Subject: [PATCH 3/3] Update code cov yml file --- codecov.yml | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/codecov.yml b/codecov.yml index 25d8f20..96f5d2d 100644 --- a/codecov.yml +++ b/codecov.yml @@ -2,14 +2,23 @@ codecov: require_ci_to_pass: yes notify: wait_for_ci: yes + max_report_age: false + coverage: status: - project: # checks the effect for the overall code coverage rate of the repository. - default: - enabled: yes - threshold: null - target: auto - patch: # This status indicates the extent of code coverage achieved by the pull request. - default: - target: 80% - threshold: 40% # With a target of 80% and a threshold of 40%, the acceptable coverage range is 40% to 80%. + project: off + patch: off + +flag_management: + default_rules: + carryforward: true + individual_flags: + - name: unit + statuses: + - type: project + target: auto + threshold: null + - type: patch + target: 80% + threshold: 40% +