Skip to content

fix: prevent stale published grails-bom snapshot from downgrading sit…#15766

Open
borinquenkid wants to merge 1 commit into
8.0.xfrom
fix/sitemesh-stale-snapshot-bom
Open

fix: prevent stale published grails-bom snapshot from downgrading sit…#15766
borinquenkid wants to merge 1 commit into
8.0.xfrom
fix/sitemesh-stale-snapshot-bom

Conversation

@borinquenkid

Copy link
Copy Markdown
Member

Description

Contributor Checklist

Please review the following checklist before submitting your pull request. Pull requests that do not meet these requirements may be closed without review.

Issue and Scope

  • This PR is linked to an existing issue that has been acknowledged or approved by the project team. If no approved issue exists, please give background on why this change is necessary. Tickets are preferred for release change log history.
  • This PR addresses the complete scope of the linked issue. Partial implementations or unfinished work should not be submitted for review.
  • [ X] This PR contains a single, focused change. Unrelated changes should be submitted as separate pull requests.
  • [ X] This PR targets the correct branch for the type of change:
    • Patch release branches (e.g., 7.0.x): Bug fixes only. No new features or API changes.
    • Minor release branches (e.g., 7.1.x): New features are welcome, but breaking existing APIs must be avoided.
    • Major release branches (e.g., 8.0.x): Reserved for major changes. Breaking API changes are permitted.

Code Quality

  • [ X] I have added or updated tests that cover the changes introduced in this PR. All code contributions are expected to include appropriate test coverage.
  • [X ] I have verified that all existing tests pass by running ./gradlew build --rerun-tasks.
  • [X ] My code follows the project's code style guidelines. I have run ./gradlew codeStyle and resolved any violations. See Code Style for details.
  • [ X] This PR does not include mass reformatting, style-only changes, or large-scale refactoring unless it was explicitly approved in the linked issue. Unsolicited reformatting will not be accepted.
  • [ X] If generative AI tooling was used in preparing this contribution, a quality model was used to ensure contributions are consistent with the project's quality standards.

Licensing and Attribution

  • [ X] All contributed code is provided under the Apache License 2.0, and new source files include the appropriate Apache license header.
  • [ X] I have the necessary rights to submit this contribution and confirm it is my own original work (see Legal Notice).
  • [ X] If generative AI tooling was used in preparing this contribution, I have followed the Apache Software Foundation's policy on generative tooling and have properly attributed its use.

Documentation

  • If this PR introduces user-facing changes, I have included or updated the relevant documentation.
  • If this PR adds a new feature, I have updated the What's New section of the Grails Guide.
  • If this PR introduces breaking changes or changes that require user action during an upgrade, I have updated the Upgrade Notes for the corresponding version in the Grails Guide.
  • [ X] The PR description clearly explains what was changed and why.

First-time contributors: Please read our Contributing Guide before submitting.
Pull requests that appear to be auto-generated, incomplete, or unrelated to an approved issue may be
closed to help maintainers focus on reviewed and planned work. We appreciate your understanding.

…emesh

The gsp-spring-boot test app imports grails-bom via io.spring.dependency-management,
which downloads the PUBLISHED snapshot from Nexus rather than the local project.  When
a CI run publishes the BOM before the sitemesh version bump lands (or when a prior run
publishes with the old version), the managed-version rule applies 3.2.2 — a version that
has never been published for the spring-webmvc-sitemesh standalone artifact, which only
exists starting at 3.3.0-M1.  This creates a circular deadlock: build fails → publish
skipped → stale BOM stays on Nexus → next build fails.

Fix: add a resolutionStrategy.eachDependency rule in functional-test-config.gradle that
reads sitemesh version keys from the local grails-bom project ext (set after
evaluationDependsOn completes) and applies them.  Because eachDependency rules are applied
in registration order and this rule is registered after the spring plugin's rule, it takes
precedence (last useVersion wins).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts the functional-test Gradle resolution rules so functional test apps don’t get their Sitemesh dependencies silently downgraded by a stale published grails-bom snapshot, which can lead to unresolvable coordinates (notably for spring-webmvc-sitemesh).

Changes:

  • Reads bomDependencyVersions from the locally-evaluated :grails-bom project.
  • Adds a resolutionStrategy.eachDependency rule to force org.sitemesh module versions to the locally-defined BOM values when applicable.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 49.2572%. Comparing base (0a334c8) to head (fc2100a).

Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##                8.0.x     #15766        +/-   ##
==================================================
- Coverage     49.2583%   49.2572%   -0.0011%     
+ Complexity      16506      16505         -1     
==================================================
  Files            1941       1941                
  Lines           92023      92023                
  Branches        16062      16062                
==================================================
- Hits            45329      45328         -1     
- Misses          39649      39651         +2     
+ Partials         7045       7044         -1     

see 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@testlens-app

testlens-app Bot commented Jun 25, 2026

Copy link
Copy Markdown

✅ All tests passed ✅

🏷️ Commit: fc2100a
▶️ Tests: 46278 executed
⚪️ Checks: 45/45 completed


Learn more about TestLens at testlens.app.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants