diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..bce2dc92e --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,25 @@ +version: 2 +updates: + # Gradle dependencies. org.json is declared separately in sdk-java, app-java + # and app-javafx; Dependabot opens one PR per module, so check that a bump + # lands everywhere before closing the others. + - package-ecosystem: gradle + directory: "/" + schedule: + interval: weekly + day: monday + open-pull-requests-limit: 5 + labels: + - dependencies + commit-message: + prefix: "chore(deps)" + + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: monthly + labels: + - dependencies + - ci + commit-message: + prefix: "chore(ci)" diff --git a/.github/dependency-scan-allowlist.txt b/.github/dependency-scan-allowlist.txt new file mode 100644 index 000000000..8b301cee2 --- /dev/null +++ b/.github/dependency-scan-allowlist.txt @@ -0,0 +1,8 @@ +# Vulnerabilities the dependency security scan may ignore, one per line: +# +# +# +# The expiry is mandatory. Once it passes, the finding blocks the scan again and the entry +# has to be re-reviewed — a temporary exception must not become a permanent silence. +# Only add an entry when there is a concrete reason the advisory cannot or need not be acted +# on right now, and say what that reason is. diff --git a/.github/scripts/coverage_report.py b/.github/scripts/coverage_report.py new file mode 100755 index 000000000..cd4271268 --- /dev/null +++ b/.github/scripts/coverage_report.py @@ -0,0 +1,305 @@ +#!/usr/bin/env python3 +"""Turn jacoco XML reports into a Markdown coverage report for a pull request comment. + +Reads one report per Gradle module, plus the list of files the pull request touched, and +writes: + + * a per-module line and branch coverage table + * coverage of the source files this pull request actually changed, which is the part a + reviewer can act on + * the least covered classes, as a standing to-do list + * the test failure count, so nobody reads coverage numbers off a broken run + +Exit code is 0 unless a configured minimum is missed and enforcement is switched on, so the +job can start out advisory and become a gate later without touching this script. + +Usage: + coverage_report.py --out coverage-report.md + --changed-files changed.txt + --module