From 4ae1d3990411169b6046e000b35397f34f6a3bb7 Mon Sep 17 00:00:00 2001 From: technoir Date: Tue, 4 Nov 2025 17:37:37 +0000 Subject: [PATCH 1/4] Improve dependency analysis reports --- .github/workflows/analysis.yaml | 54 ++++++++++++++++++++++++++------ jvm-conventions/build.gradle.kts | 1 + 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/.github/workflows/analysis.yaml b/.github/workflows/analysis.yaml index 97974c3..a5d085c 100644 --- a/.github/workflows/analysis.yaml +++ b/.github/workflows/analysis.yaml @@ -13,6 +13,8 @@ jobs: permissions: contents: read + checks: write + packages: read steps: - name: Set up JDK @@ -27,18 +29,18 @@ jobs: - name: Checkout base branch uses: actions/checkout@v5.0.0 with: - ref: ${{ github.event.pull_request.base.ref }} + ref: ${{ github.event.pull_request.base.sha }} fetch-depth: 0 - - name: Analyse build health on base branch + - name: Analyse build health (baseline) run: | ./gradlew :buildHealth \ --scan \ -Pgpr.user=${{ github.repository_owner }} \ -Pgpr.token=${{ secrets.GITHUB_TOKEN }} - - name: Store base build health report - run: cp build/reports/dependency-analysis/build-health-report.txt build-health-report.base.txt + - name: Copy baseline report + run: cp build/reports/dependency-analysis/build-health-report.txt baseline.txt - name: Checkout uses: actions/checkout@v5.0.0 @@ -52,28 +54,60 @@ jobs: -Pgpr.user=${{ github.repository_owner }} \ -Pgpr.token=${{ secrets.GITHUB_TOKEN }} - - name: Publish report + - name: Upload report + if: always() + uses: actions/upload-artifact@v5.0.0 + with: + name: build-health-report + path: build/reports/dependency-analysis/build-health-report.txt + + - name: Generate summary + id: generate_summary + if: hashFiles('build/reports/dependency-analysis/build-health-report.txt') != '' run: | - cp build/reports/dependency-analysis/build-health-report.txt build-health-report.current.txt + cp build/reports/dependency-analysis/build-health-report.txt current.txt status=$? - git --no-pager diff --no-index build-health-report.base.txt build-health-report.current.txt > build-health-report.diff || status=$? + git --no-pager diff --no-index --no-color baseline.txt current.txt > build-health-report.diff || status=$? if [ $status -gt 1 ]; then exit $status fi + has_additions=false if [ -s build-health-report.diff ]; then + if grep -q '^+[^+]' build-health-report.diff; then + has_additions=true + fi { echo '```diff' cat build-health-report.diff echo '```' - } >> "$GITHUB_STEP_SUMMARY" + } >> build-health-summary.md + fi + echo "has_additions=$has_additions" >> "$GITHUB_OUTPUT" + if [ -f build-health-summary.md ]; then + { + echo 'summary<> "$GITHUB_OUTPUT" fi - dependencies-sorting: - name: Dependencies sorting + - name: Publish summary + uses: LouisBrunner/checks-action@v2.0.0 + if: always() + with: + token: ${{ secrets.GITHUB_TOKEN }} + name: Build health + conclusion: ${{ steps.generate_summary.outputs.has_additions == 'true' && 'failure' || job.status }} + output: | + ${{ format('{{ "summary": {0} }}', toJSON(steps.generate_summary.outputs.summary || '')) }} + + dependency-sorting: + name: Dependency sorting runs-on: ubuntu-24.04 permissions: contents: read + packages: read steps: - name: Set up JDK diff --git a/jvm-conventions/build.gradle.kts b/jvm-conventions/build.gradle.kts index 9523a87..993971c 100644 --- a/jvm-conventions/build.gradle.kts +++ b/jvm-conventions/build.gradle.kts @@ -19,6 +19,7 @@ dependencies { implementation(project(":common-conventions")) implementation(project(":libraries:gradle-extensions")) + implementation(libs.maven.artifact) functionalTestImplementation(testFixtures(project(":common-conventions"))) functionalTestImplementation(project(":libraries:gradle-test-kit")) From a45eb5f959ca6f170701038454f7661d222c2b71 Mon Sep 17 00:00:00 2001 From: technoir Date: Tue, 4 Nov 2025 18:10:26 +0000 Subject: [PATCH 2/4] Test --- .github/workflows/analysis.yaml | 42 +++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/.github/workflows/analysis.yaml b/.github/workflows/analysis.yaml index a5d085c..4ae0fb6 100644 --- a/.github/workflows/analysis.yaml +++ b/.github/workflows/analysis.yaml @@ -7,8 +7,8 @@ concurrency: group: ${{ github.workflow_ref }}-${{ github.ref }} jobs: - build-health: - name: Build health + dependencies: + name: Dependencies runs-on: ubuntu-24.04 permissions: @@ -71,10 +71,10 @@ jobs: if [ $status -gt 1 ]; then exit $status fi - has_additions=false + failure=false if [ -s build-health-report.diff ]; then if grep -q '^+[^+]' build-health-report.diff; then - has_additions=true + failure=true fi { echo '```diff' @@ -82,7 +82,7 @@ jobs: echo '```' } >> build-health-summary.md fi - echo "has_additions=$has_additions" >> "$GITHUB_OUTPUT" + echo "failure=$failure" >> "$GITHUB_OUTPUT" if [ -f build-health-summary.md ]; then { echo 'summary< dependencies-sorting.diff + failure=false if [ -s dependencies-sorting.diff ]; then + failure=true { - echo '```diff' + echo 'summary<> "$GITHUB_STEP_SUMMARY" - echo 'Dependencies are not sorted' - exit 1 + echo 'EOF' + } >> "$GITHUB_OUTPUT" fi + echo "failure=$failure" >> "$GITHUB_OUTPUT" + + - name: Publish summary + uses: LouisBrunner/checks-action@v2.0.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + name: Dependency analysis + conclusion: ${{ steps.generate_summary.outputs.failure == 'true' && 'failure' || job.status }} + output: | + ${{ format('{{ "summary": {0} }}', toJSON(steps.generate_summary.outputs.summary || '')) }} From ee255b809edb80f6f00416f76006cbb81ce15478 Mon Sep 17 00:00:00 2001 From: technoir Date: Tue, 4 Nov 2025 18:14:55 +0000 Subject: [PATCH 3/4] Test --- .github/workflows/analysis.yaml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/analysis.yaml b/.github/workflows/analysis.yaml index 4ae0fb6..9349d03 100644 --- a/.github/workflows/analysis.yaml +++ b/.github/workflows/analysis.yaml @@ -72,9 +72,11 @@ jobs: exit $status fi failure=false + summary="" if [ -s build-health-report.diff ]; then if grep -q '^+[^+]' build-health-report.diff; then failure=true + summary="Dependency problems found" fi { echo '```diff' @@ -83,13 +85,7 @@ jobs: } >> build-health-summary.md fi echo "failure=$failure" >> "$GITHUB_OUTPUT" - if [ -f build-health-summary.md ]; then - { - echo 'summary<> "$GITHUB_OUTPUT" - fi + echo "summary=$summary" >> "$GITHUB_OUTPUT" - name: Publish summary uses: LouisBrunner/checks-action@v2.0.0 @@ -99,7 +95,7 @@ jobs: name: Dependency analysis conclusion: ${{ steps.generate_summary.outputs.failure == 'true' && 'failure' || job.status }} output: | - ${{ format('{{ "summary": {0} }}', toJSON(steps.generate_summary.outputs.summary || '')) }} + ${{ "summary": "${{ steps.generate_summary.outputs.summary }}" }} output_text_description_file: build-health-summary.md dependencies-sorting: @@ -108,6 +104,7 @@ jobs: permissions: contents: read + checks: write packages: read steps: From f922576d65c2ec14f49993ea0dd3b1089b5c2c60 Mon Sep 17 00:00:00 2001 From: technoir Date: Tue, 4 Nov 2025 18:17:03 +0000 Subject: [PATCH 4/4] Test --- .github/workflows/analysis.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis.yaml b/.github/workflows/analysis.yaml index 9349d03..649c06a 100644 --- a/.github/workflows/analysis.yaml +++ b/.github/workflows/analysis.yaml @@ -95,7 +95,7 @@ jobs: name: Dependency analysis conclusion: ${{ steps.generate_summary.outputs.failure == 'true' && 'failure' || job.status }} output: | - ${{ "summary": "${{ steps.generate_summary.outputs.summary }}" }} + { "summary": "${{ steps.generate_summary.outputs.summary }}" } output_text_description_file: build-health-summary.md dependencies-sorting: