-
Notifications
You must be signed in to change notification settings - Fork 712
Add codecov config #4568
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 4.12.x
Are you sure you want to change the base?
Add codecov config #4568
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -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 21 | ||||||
| uses: actions/setup-java@v4 | ||||||
| with: | ||||||
| java-version: 21 | ||||||
| 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") | ||||||
|
Comment on lines
+46
to
+56
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
curl -s "https://api.github.com/repos/wso2/product-is/actions/workflows/oidc-conformance-test.yml/runs?status=success&per_page=5" \
| jq -r '.workflow_runs[] | [.id, .head_branch, .head_sha, .created_at] | `@tsv`'
curl -s "https://api.github.com/repos/wso2/product-is/actions/workflows/fapi-oidc-conformance-test.yml/runs?status=success&per_page=5" \
| jq -r '.workflow_runs[] | [.id, .head_branch, .head_sha, .created_at] | `@tsv`'Repository: wso2/carbon-kernel Length of output: 541 🏁 Script executed: cat -n .github/workflows/coverage-generator.yml | head -180Repository: wso2/carbon-kernel Length of output: 7172 Pin external coverage artifacts to the branch being reported. The GitHub API calls at lines 56 and 116 fetch the latest successful workflow run across all branches, and line 169 uses Jenkins To fix, add branch filtering to the GitHub API queries:
🧰 Tools🪛 actionlint (1.7.12)[error] 48-48: workflow command "set-output" was deprecated. use (deprecated-commands) 🤖 Prompt for AI Agents |
||||||
| 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" | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
rg -n '::set-output' .github/workflowsRepository: wso2/carbon-kernel Length of output: 276 🏁 Script executed: cat -n .github/workflows/coverage-generator.yml | sed -n '65,80p'Repository: wso2/carbon-kernel Length of output: 851 🏁 Script executed: cat -n .github/workflows/coverage-generator.yml | sed -n '125,140p'Repository: wso2/carbon-kernel Length of output: 855 Replace deprecated Lines 73 and 133 use the deprecated Proposed fix- echo "::set-output name=artifact-url::$ARTIFACT_URL"
+ echo "artifact-url=$ARTIFACT_URL" >> "$GITHUB_OUTPUT"📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
|
|
||||||
| - 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 | ||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -43,3 +43,11 @@ jobs: | |||||||||||||||||||||||||||
| ${{ runner.os }}- | ||||||||||||||||||||||||||||
| - name: Build with Maven | ||||||||||||||||||||||||||||
| run: mvn clean install -U -B | ||||||||||||||||||||||||||||
| - name: Delete SNAPSHOT artifacts | ||||||||||||||||||||||||||||
| run: find ~/.m2/repository/ -name "*-SNAPSHOT" -type d -print -prune -exec rm -r {} + | ||||||||||||||||||||||||||||
| - name: Upload coverage reports to Codecov | ||||||||||||||||||||||||||||
| uses: codecov/codecov-action@v4 | ||||||||||||||||||||||||||||
| with: | ||||||||||||||||||||||||||||
| token: ${{ secrets.CODECOV_TOKEN }} | ||||||||||||||||||||||||||||
| files: "**/target/coverage-reports/site/jacoco-aggregate/jacoco.xml" | ||||||||||||||||||||||||||||
| flags: unit | ||||||||||||||||||||||||||||
|
Comment on lines
+48
to
+53
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: No, codecov/codecov-action@v4 does not stop auto-discovering coverage files when the files input is set; the specified files are added to those found by the default search. Yes, disable_search: true is required to limit the upload to only the provided JaCoCo XML file(s), disabling the automatic search. Citations:
Add The Proposed fix - name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: "**/target/coverage-reports/site/jacoco-aggregate/jacoco.xml"
flags: unit
+ disable_search: true📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| codecov: | ||
| require_ci_to_pass: yes | ||
| notify: | ||
| wait_for_ci: yes | ||
| max_report_age: false | ||
|
|
||
| coverage: | ||
| status: | ||
| 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% |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 66
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 341
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 359
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 2541
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 66
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 294
🏁 Script executed:
Repository: wso2/carbon-kernel
Length of output: 94
Scheduled workflows only run on the default branch (
master).If this change is intended for the
4.12.xbranch, the cron trigger on line 7 will never execute. Move this workflow to the default branch or remove the schedule trigger from non-default branches.🤖 Prompt for AI Agents