Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
006cd17
Bump org.jenkins-ci.main:jenkins-core from 2.545 to 2.546
dependabot[bot] Jan 13, 2026
e6636f8
Initial commit.
IgorMiksza Dec 31, 2025
f891f35
Modified README.md
IgorMiksza Jan 14, 2026
73353a9
Merge pull request #660 from jenkinsci/dependabot/maven/org.jenkins-c…
uhafner Jan 15, 2026
5d0018d
Bump kentaro-m/auto-assign-action from 2.0.0 to 2.0.1
dependabot[bot] Jan 19, 2026
19d152d
Bump com.fasterxml.jackson.core:jackson-databind from 2.20.1 to 2.21.0
dependabot[bot] Jan 19, 2026
5aa8d7d
Bump org.jenkins-ci.main:jenkins-core from 2.546 to 2.547
dependabot[bot] Jan 20, 2026
ff4b4ef
Bumped "coverage-model.version" to: 0.66.0-rc1266.b_e6b_17a_f3c2c
IgorMiksza Jan 20, 2026
b670ce2
Bumped "coverage-model.version" to 0.66.0-rc1267.b_509b_0079b_61
IgorMiksza Jan 21, 2026
6504378
Hide source code if user does not have access to workspace
akash-manna-sky Jan 23, 2026
1d22c2a
Add permission denied message for coverage access
akash-manna-sky Jan 23, 2026
1baf6ac
use try-with-resources for better resource management
akash-manna-sky Jan 23, 2026
61f67f2
use IOException instead of generic Exception
akash-manna-sky Jan 24, 2026
750269e
Merge pull request #665 from jenkinsci/dependabot/maven/org.jenkins-c…
uhafner Jan 26, 2026
451f6dc
Merge pull request #664 from jenkinsci/dependabot/maven/com.fasterxml…
uhafner Jan 26, 2026
71e5ef9
Merge pull request #663 from jenkinsci/dependabot/github_actions/kent…
uhafner Jan 26, 2026
5147de3
Bump edu.hm.hafner:coverage-model from 0.65.0 to 0.66.0
dependabot[bot] Jan 26, 2026
496591c
Bump org.jenkins-ci.main:jenkins-core from 2.547 to 2.548
dependabot[bot] Jan 27, 2026
7390dad
Merge pull request #668 from jenkinsci/dependabot/maven/org.jenkins-c…
uhafner Jan 27, 2026
cc932e7
Merge pull request #667 from jenkinsci/dependabot/maven/edu.hm.hafner…
uhafner Jan 27, 2026
5682727
update the message text
akash-manna-sky Jan 27, 2026
7917fba
Update prism-api dependency version and refactor source code permissi…
akash-manna-sky Jan 27, 2026
3da1491
use try-with-resources for InputStreamReader
akash-manna-sky Jan 28, 2026
dec1163
fix checkstyle warning with proper indentation
akash-manna-sky Jan 28, 2026
731d2e8
Merge pull request #666 from akash-manna-sky/JENKINS-72544
uhafner Jan 28, 2026
1ed4f94
Remove Jenkins badges, authentication is now required
uhafner Feb 6, 2026
2de69c5
Remove link to Jenkins CI
uhafner Feb 6, 2026
81d17fa
Bump io.netty:netty-bom from 4.2.9.Final to 4.2.10.Final
dependabot[bot] Feb 7, 2026
af49c56
Merge pull request #673 from jenkinsci/dependabot/maven/io.netty-nett…
uhafner Feb 7, 2026
21affe8
Bump org.jenkins-ci.main:jenkins-core from 2.548 to 2.549
dependabot[bot] Feb 7, 2026
9ebe6f7
Bump dawidd6/action-download-artifact from 12 to 14
dependabot[bot] Feb 7, 2026
859e3c1
Merge pull request #671 from jenkinsci/dependabot/maven/org.jenkins-c…
uhafner Feb 7, 2026
baabd3a
Merge pull request #670 from jenkinsci/dependabot/github_actions/dawi…
uhafner Feb 7, 2026
c6b3df0
Bump org.jenkins-ci.main:jenkins-core from 2.549 to 2.550
dependabot[bot] Feb 10, 2026
14fb5c4
Merge pull request #675 from jenkinsci/dependabot/maven/org.jenkins-c…
uhafner Feb 10, 2026
12e8ecd
Move dependency check to different pipeline
uhafner Feb 24, 2026
e23f87d
Initial commit.
IgorMiksza Dec 31, 2025
d558dea
Modified README.md
IgorMiksza Jan 14, 2026
ef27ffd
Bumped "coverage-model.version" to: 0.66.0-rc1266.b_e6b_17a_f3c2c
IgorMiksza Jan 20, 2026
360ea4e
Bumped "coverage-model.version" to 0.66.0-rc1267.b_509b_0079b_61
IgorMiksza Jan 21, 2026
b76a504
Merge branch 'trace32-coverage' of https://github.com/IgorMiksza/cove…
IgorMiksza Feb 26, 2026
5389369
Removed duped metrics
IgorMiksza Mar 3, 2026
01d792f
Bumped `coverage-model.version` to `0.67.0-rc1288.7c1e4750a_8b_a_`
IgorMiksza Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions .github/scripts/fetch-artifacts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/bin/env bash
set -euo pipefail

# This script expects the following environment variables:
# REPO: owner/repo
# HEAD_SHA: the commit SHA for which the producer workflows ran
# TOKEN: a token with read access to Actions (GITHUB_TOKEN or a PAT)
# OTHER_WORKFLOWS: comma-separated list of workflow filenames or workflow IDs
# ARTIFACT_NAMES: comma-separated list of artifact names (in the same order as WORKFLOWS)
# Optional:
# RETRIES: number of polling attempts per workflow (default: 30)
# SLEEP_SEC: seconds to wait between attempts (default: 10)

IFS=',' read -r -a WORKFLOWS_ARR <<< "${OTHER_WORKFLOWS}"
IFS=',' read -r -a ARTIFACTS_ARR <<< "${ARTIFACT_NAMES}"
REPO="${REPO}"
SHA="${HEAD_SHA}"
TOKEN="${TOKEN}"
API_BASE="https://api.github.com/repos/${REPO}"
RETRIES=${RETRIES:-30}
SLEEP_SEC=${SLEEP_SEC:-10}

mkdir -p artifacts

if [ ${#WORKFLOWS_ARR[@]} -ne ${#ARTIFACTS_ARR[@]} ]; then
echo "ERROR: OTHER_WORKFLOWS and ARTIFACT_NAMES must have the same number of items"
exit 1
fi

for idx in "${!WORKFLOWS_ARR[@]}"; do
wf_raw="${WORKFLOWS_ARR[$idx]}"
wf=$(echo "$wf_raw" | tr -d '[:space:]')
art_raw="${ARTIFACTS_ARR[$idx]}"
art=$(echo "$art_raw" | tr -d '[:space:]')

echo "-- Waiting for workflow '$wf' to succeed for sha $SHA (artifact: $art)"
attempt=0

while true; do
attempt=$((attempt+1))
echo " attempt $attempt/$RETRIES"

# 1) Liste Runs für das Workflow (workflow id/name/file)
resp=$(curl -s -H "Authorization: Bearer ${TOKEN}" "${API_BASE}/actions/workflows/${wf}/runs?per_page=50")

# 2) Finde Run mit matching head_sha
run_id=$(echo "$resp" | jq -r --arg SHA "$SHA" '.workflow_runs[] | select(.head_sha==$SHA) | .id' | head -n1 || true)
run_status=$(echo "$resp" | jq -r --arg SHA "$SHA" '.workflow_runs[] | select(.head_sha==$SHA) | .status' | head -n1 || true)
run_conclusion=$(echo "$resp" | jq -r --arg SHA "$SHA" '.workflow_runs[] | select(.head_sha==$SHA) | .conclusion' | head -n1 || true)

if [ -n "${run_id}" ] && [ "${run_id}" != "null" ]; then
echo " Found run ${run_id} status=${run_status} conclusion=${run_conclusion}"

if [ "${run_status}" = "completed" ]; then
if [ "${run_conclusion}" = "success" ]; then
echo " Run succeeded — listing artifacts"
art_resp=$(curl -s -H "Authorization: Bearer ${TOKEN}" "${API_BASE}/actions/runs/${run_id}/artifacts")
art_id=$(echo "$art_resp" | jq -r --arg NAME "$art" '.artifacts[] | select(.name==$NAME) | .id' | head -n1 || true)

if [ -n "${art_id}" ] && [ "${art_id}" != "null" ]; then
echo " Downloading artifact '$art' (id=${art_id})"
out_zip="artifacts/${art}.zip"
curl -L -s -H "Authorization: Bearer ${TOKEN}" "${API_BASE}/actions/artifacts/${art_id}/zip" -o "${out_zip}"
echo " Unpacking to artifacts/${art}/"
mkdir -p "artifacts/${art}"
unzip -o "${out_zip}" -d "artifacts/${art}" >/dev/null
rm -f "${out_zip}"
echo " Artifact $art downloaded and unpacked"
break
else
echo " ERROR: Artifact '$art' not found in run ${run_id}"
exit 1
fi
else
echo " ERROR: Run completed but conclusion='${run_conclusion}'"
exit 1
fi
else
echo " Run exists but not completed yet (status=${run_status}), will retry"
fi
else
echo " No run found for workflow '${wf}' and sha ${SHA} yet"
fi

if [ ${attempt} -ge ${RETRIES} ]; then
echo "ERROR: Timeout waiting for workflow '${wf}' to succeed for sha ${SHA}"
exit 1
fi

sleep ${SLEEP_SEC}
done

done

echo "All requested artifacts downloaded into ./artifacts/"
exit 0
2 changes: 1 addition & 1 deletion .github/workflows/assign-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ jobs:
name: 'Auto Assign PR'
runs-on: ubuntu-latest
steps:
- uses: kentaro-m/auto-assign-action@v2.0.0
- uses: kentaro-m/auto-assign-action@v2.0.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
48 changes: 48 additions & 0 deletions .github/workflows/dependency-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: 'Dependency Check'

on:
push:
branches:
- main
pull_request_target:

jobs:
build:
runs-on: [ubuntu-latest]
name: Create report

steps:
- name: Checkout project
uses: actions/checkout@v6
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 25
check-latest: true
cache: 'maven'
- name: Set up Maven
uses: stCarolas/setup-maven@v5
with:
maven-version: 3.9.12
- name: Cache the NVD database
uses: actions/cache@v5
with:
path: ~/.m2/repository/org/owasp/dependency-check-data
key: dependency-check
- name: Build with Maven
env:
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
OSS_INDEX_TOKEN: ${{ secrets.OSS_INDEX_TOKEN }}
run: |
mvn -V --color always -ntp verify -Pci -Powasp
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit 1;
fi
- name: Upload Dependency Report
uses: actions/upload-artifact@v6
with:
name: dependency-report
path: |
**/target/dependency-check-report.json

24 changes: 10 additions & 14 deletions .github/workflows/quality-monitor-build.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,30 @@
name: 'Quality Monitor Build'
name: 'Quality Monitor'

on:
push:
branches:
- main
pull_request:

jobs:
build:
runs-on: [ubuntu-latest]
name: Create quality reports
name: Create reports

steps:
- name: Checkout PR
- name: Checkout project
uses: actions/checkout@v6
- name: Set up JDK 21
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 21
java-version: 25
check-latest: true
cache: 'maven'
- name: Set up Maven
uses: stCarolas/setup-maven@v5
with:
maven-version: 3.9.11
- name: Cache the NVD database
uses: actions/cache@v5
with:
path: ~/.m2/repository/org/owasp/dependency-check-data
key: dependency-check
maven-version: 3.9.12
- name: Check if quality monitor reports mutation coverage
run: |
FILE='.github/quality-monitor.json'
Expand All @@ -38,12 +36,10 @@ jobs:
fi
- name: Build with Maven
env:
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
OSS_INDEX_TOKEN: ${{ secrets.OSS_INDEX_TOKEN }}
PIT: ${{ env.PIT }}
BROWSER: chrome-container
run: |
mvn -V --color always -ntp clean verify $PIT -Pci -Powasp | tee maven.log
mvn -V --color always -ntp clean verify $PIT -Pci | tee maven.log
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit 1;
fi
Expand Down
42 changes: 32 additions & 10 deletions .github/workflows/quality-monitor-comment-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: 'Quality Monitor Comment PR'

on:
workflow_run:
workflows: [ "Quality Monitor Build" ]
types: [ completed ]
workflows: ['Quality Monitor', 'Dependency Check']
types: [completed]

permissions:
actions: read
Expand All @@ -13,7 +13,7 @@ permissions:

jobs:
comment:
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' }}
if: ${{ github.event.workflow_run.event == 'pull_request' }}
runs-on: ubuntu-latest
name: Comment on PR

Expand All @@ -22,18 +22,40 @@ jobs:
id: pr
run: |
pr_number='${{ github.event.workflow_run.pull_requests[0].number }}'
echo "number=$pr_number" >> "$GITHUB_OUTPUT"
echo "number=$pr_number" >> "$GITHUB_OUTPUT"
sha='${{ github.event.workflow_run.head_sha }}'
echo "sha=$sha" >> "$GITHUB_OUTPUT"
echo "sha=$sha" >> "$GITHUB_OUTPUT"
- name: Checkout PR
uses: actions/checkout@v6
with:
ref: ${{ steps.pr.outputs.sha }}
- name: Download PR Quality Reports from Quality Monitor Build workflow
uses: dawidd6/action-download-artifact@v12
with:
run_id: ${{ github.event.workflow_run.id }}
name: quality-reports
- name: Install jq and unzip
run: sudo apt-get update && sudo apt-get install -y jq unzip
- name: Prepare environment
env:
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
REPO: ${{ github.repository }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "HEAD_SHA=$HEAD_SHA"
echo "REPO=$REPO"
- name: Fetch reports from dependency check and quality monitor workflows
env:
REPO: ${{ github.repository }}
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
OTHER_WORKFLOWS: "quality-monitor-build.yml,dependency-check.yml"
ARTIFACT_NAMES: "quality-reports,dependency-report"
RETRIES: 30
SLEEP_SEC: 10
run: |
chmod +x ./.github/scripts/fetch-artifacts.sh
./.github/scripts/fetch-artifacts.sh
- name: List downloaded reports
run: |
mkdir -p reports/target
mv artifacts/*/target/* reports/target
ls -la reports/target/* || true
- name: Read Quality Monitor Configuration
id: quality-monitor
run: echo "json=$(jq -c . .github/quality-monitor-pr.json)" >> "$GITHUB_OUTPUT"
Expand Down
38 changes: 30 additions & 8 deletions .github/workflows/quality-monitor-comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: 'Quality Monitor Comment'

on:
workflow_run:
workflows: [ "Quality Monitor Build" ]
types: [ completed ]
workflows: ['Quality Monitor', 'Dependency Check']
types: [completed]

permissions:
actions: read
Expand All @@ -13,18 +13,40 @@ permissions:

jobs:
comment:
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && github.event.workflow_run.head_branch == 'main' }}
if: ${{ github.event.workflow_run.event == 'push' && github.event.workflow_run.head_branch == 'main' }}
runs-on: ubuntu-latest
name: Comment main branch

steps:
- name: Checkout main branch
uses: actions/checkout@v6
- name: Download Quality Reports from Quality Monitor Build workflow
uses: dawidd6/action-download-artifact@v12
with:
run_id: ${{ github.event.workflow_run.id }}
name: quality-reports
- name: Install jq and unzip
run: sudo apt-get update && sudo apt-get install -y jq unzip
- name: Prepare environment
env:
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
REPO: ${{ github.repository }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "HEAD_SHA=$HEAD_SHA"
echo "REPO=$REPO"
- name: Fetch reports from dependency check and quality monitor workflows
env:
REPO: ${{ github.repository }}
HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
OTHER_WORKFLOWS: "quality-monitor-build.yml,dependency-check.yml"
ARTIFACT_NAMES: "quality-reports,dependency-report"
RETRIES: 30
SLEEP_SEC: 10
run: |
chmod +x ./.github/scripts/fetch-artifacts.sh
./.github/scripts/fetch-artifacts.sh
- name: List downloaded reports
run: |
mkdir -p reports/target
mv artifacts/*/target/* reports/target
ls -la reports/target/* || true
- name: Read Quality Monitor Configuration
id: quality-monitor
run: echo "json=$(jq -c . .github/quality-monitor.json)" >> "$GITHUB_OUTPUT"
Expand Down
5 changes: 0 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,3 @@ The Coverage plugin is licensed under [MIT license](./LICENSE). We consider all
explicitly stated otherwise. MIT-incompatible code contributions will be rejected.
Contributions under MIT-compatible licenses may be also rejected if they are not ultimately necessary.

## Continuous Integration

The Jenkins project has a Continuous Integration server... powered by Jenkins, of course.
The CI job for this project is located at [ci.jenkins.io](https://ci.jenkins.io/job/Plugins/job/coverage-plugin/).

3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

[![Join the chat at Gitter/Matrix](https://badges.gitter.im/jenkinsci/code-coverage-api-plugin.svg)](https://gitter.im/jenkinsci/code-coverage-api-plugin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/coverage.svg?color=red)](https://plugins.jenkins.io/coverage)
[![Jenkins](https://ci.jenkins.io/job/Plugins/job/coverage-plugin/job/main/badge/icon?subject=Jenkins%20CI)](https://ci.jenkins.io/job/Plugins/job/coverage-plugin/job/main/)
[![GitHub Actions](https://github.com/jenkinsci/coverage-plugin/workflows/GitHub%20CI/badge.svg)](https://github.com/jenkinsci/coverage-plugin/actions)
[![CodeQL](https://github.com/jenkinsci/coverage-plugin/workflows/CodeQL/badge.svg)](https://github.com/jenkinsci/coverage-plugin/actions/workflows/codeql.yml)

Expand All @@ -15,6 +14,7 @@ It has support for the following report formats:
- [JaCoCo](https://www.jacoco.org/) code coverage results
- [OpenCover](https://github.com/OpenCover/opencover) code coverage results
- [VectorCAST](https://www.vector.com/int/en/products/products-a-z/software/vectorcast) code coverage results including MC/DC, Function, Function Call coverages
- [TRACE32](https://www.lauterbach.com) code coverage results
- [PIT](https://pitest.org/) mutation coverage results
- [JUnit](https://junit.org/junit5/) test results
- [NUnit](https://nunit.org) test results
Expand Down Expand Up @@ -114,6 +114,7 @@ The Coverage Plug-in supports the following report formats:
- [Cobertura](https://cobertura.github.io/cobertura/): Code Coverage
- [OpenCover](https://github.com/OpenCover/opencover): Code Coverage
- [VectorCAST](https://www.vector.com/int/en/products/products-a-z/software/vectorcast) Code Coverage including MC/DC, Function, Function Call coverages
- [TRACE32](https://www.lauterbach.com) Code Coverage
- [PIT](https://pitest.org/): Mutation Coverage
- [JUnit](https://ant.apache.org/manual/Tasks/junitreport.html): Test Results
- [NUnit](https://nunit.org/): Test Results
Expand Down
5 changes: 3 additions & 2 deletions plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<name>Coverage Plugin</name>
<description>Collects reports of code coverage or mutation coverage tools and visualizes the results. It has support
for the following report formats: JaCoCo, Cobertura, and PIT.</description>
for the following report formats: JaCoCo, Cobertura, PIT and TRACE32.</description>
<url>https://github.com/jenkinsci/coverage-plugin</url>

<licenses>
Expand All @@ -35,7 +35,7 @@
<maven.deploy.skip>false</maven.deploy.skip>

<!-- Library Dependencies Versions -->
<coverage-model.version>0.65.0</coverage-model.version>
<coverage-model.version>0.67.0-rc1288.7c1e4750a_8b_a_</coverage-model.version>

<!-- Test Library Dependencies Versions -->
<xmlunit.version>2.11.0</xmlunit.version>
Expand Down Expand Up @@ -149,6 +149,7 @@
<dependency>
<groupId>io.jenkins.plugins</groupId>
<artifactId>prism-api</artifactId>
<version>1.30.0-703.v116fb_3b_5b_b_a_a_</version>
</dependency>

<!-- Test Dependencies -->
Expand Down
Loading
Loading