Skip to content

Commit c0bd6ec

Browse files
authored
Merge branch '7.0.x' into docs/configuration-hybrid
2 parents 9a6dd39 + 5efadac commit c0bd6ec

131 files changed

Lines changed: 388 additions & 1372 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
## Description
2+
<!-- Describe your change and the problem it solves. Link to the related issue(s) if they exist. -->
3+
4+
## Contributor Checklist
5+
6+
Please review the following checklist before submitting your pull request. Pull requests that do not meet these requirements may be closed without review.
7+
8+
### Issue and Scope
9+
10+
- [ ] 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.
11+
- [ ] This PR addresses the **complete scope** of the linked issue. Partial implementations or unfinished work should not be submitted for review.
12+
- [ ] This PR contains a **single, focused change**. Unrelated changes should be submitted as separate pull requests.
13+
- [ ] This PR targets the **correct branch** for the type of change:
14+
- **Patch release branches** (e.g., `7.0.x`): Bug fixes only. No new features or API changes.
15+
- **Minor release branches** (e.g., `7.1.x`): New features are welcome, but breaking existing APIs must be avoided.
16+
- **Major release branches** (e.g., `8.0.x`): Reserved for major changes. Breaking API changes are permitted.
17+
18+
### Code Quality
19+
20+
- [ ] I have **added or updated tests** that cover the changes introduced in this PR. All code contributions are expected to include appropriate test coverage.
21+
- [ ] I have verified that all existing tests pass by running `./gradlew build --rerun-tasks`.
22+
- [ ] My code follows the project's **code style** guidelines. I have run `./gradlew codeStyle` and resolved any violations. See [Code Style](../CONTRIBUTING.md#code-style) for details.
23+
- [ ] 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.
24+
- [ ] 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**.
25+
26+
### Licensing and Attribution
27+
28+
- [ ] All contributed code is provided under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0), and new source files include the appropriate **Apache license header**.
29+
- [ ] I have the necessary rights to submit this contribution and confirm it is my own original work (see [Legal Notice](../CONTRIBUTING.md#i-want-to-contribute)).
30+
- [ ] If generative AI tooling was used in preparing this contribution, I have followed the [Apache Software Foundation's policy on generative tooling](https://www.apache.org/legal/generative-tooling.html) and have properly attributed its use.
31+
32+
### Documentation
33+
34+
- [ ] If this PR introduces user-facing changes, I have included or updated the relevant documentation.
35+
- [ ] If this PR adds a new feature, I have updated the **What's New** section of the Grails Guide.
36+
- [ ] 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.
37+
- [ ] The PR description clearly explains **what** was changed and **why**.
38+
39+
---
40+
41+
> **First-time contributors:** Please read our [Contributing Guide](../CONTRIBUTING.md) before submitting.
42+
> Pull requests that appear to be auto-generated, incomplete, or unrelated to an approved issue may be
43+
> closed to help maintainers focus on reviewed and planned work. We appreciate your understanding.

.github/release-drafter.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ categories:
128128
labels:
129129
- 'revert'
130130
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
131+
filter-by-commitish: true
131132
version-resolver:
132133
major:
133134
labels:
@@ -146,4 +147,4 @@ template: |
146147
147148
## Contributors
148149
149-
$CONTRIBUTORS
150+
$CONTRIBUTORS

.github/scripts/releaseDistributions.sh

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,19 @@ svn_exists() {
5858
svn ls "${svn_flags[@]}" --depth=empty "${url}" >/dev/null 2>&1
5959
}
6060

61-
old_release_folder="$(svn ls "${svn_flags[@]}" "${RELEASE_ROOT}" | awk -F/ 'NF{print $1; exit}')"
62-
if [[ -n "${old_release_folder}" ]]; then
63-
PRIOR_RELEASE_URL="${RELEASE_ROOT}/${old_release_folder}"
64-
echo "🗑️ Deleting old release folder: ${PRIOR_RELEASE_URL}"
65-
svn rm "${svn_flags[@]}" -m "Remove previous release ${old_release_folder}" "${PRIOR_RELEASE_URL}"
66-
echo "✅ Deleted old release folder"
67-
else
68-
echo "ℹ️ No existing release subfolder found under ${RELEASE_ROOT}"
69-
fi
61+
for folder in $(svn ls "${svn_flags[@]}" "${RELEASE_ROOT}"); do
62+
folder=$(echo "$folder" | sed 's|/$||')
63+
[[ "${folder}" == "${RELEASE_VERSION}" ]] && continue
64+
PRIOR_RELEASE_URL="${RELEASE_ROOT}/${folder}"
65+
read -r -p "Remove old release folder '${folder}' at ${PRIOR_RELEASE_URL}? [y/N] " confirm < /dev/tty
66+
if [[ "${confirm}" =~ ^[Yy](es)?$ ]]; then
67+
echo "🗑️ Deleting old release folder: ${PRIOR_RELEASE_URL}"
68+
svn rm "${svn_flags[@]}" -m "Remove previous release ${folder}" "${PRIOR_RELEASE_URL}"
69+
echo "✅ Deleted old release folder"
70+
else
71+
echo "⏭️ Skipping removal of old release folder: ${PRIOR_RELEASE_URL}"
72+
fi
73+
done
7074

7175
DEV_VERSION_URL="$DEV_ROOT/${RELEASE_VERSION}"
7276
RELEASE_VERSION_URL="$RELEASE_ROOT/${RELEASE_VERSION}"

.github/workflows/release-notes.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ on:
2525
workflow_dispatch:
2626
# queue jobs and only allow 1 run per branch due to the likelihood of hitting GitHub resource limits
2727
concurrency:
28-
group: release-pipeline
28+
group: release-pipeline-${{ github.event.pull_request.base.ref || github.ref_name }}
2929
cancel-in-progress: false
3030
jobs:
3131
update_release_draft:
@@ -50,4 +50,4 @@ jobs:
5050
commitish: ${{ github.event.pull_request.base.ref || github.ref_name }}
5151
filter-by-range: ${{ steps.version.outputs.range }}
5252
env:
53-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ env:
3838
TARGET_BRANCH: ${{ github.event.release.target_commitish }}
3939
VERSION: will be computed in each job
4040
concurrency:
41-
group: release-pipeline
41+
group: release-pipeline-${{ github.event.release.target_commitish }}
4242
cancel-in-progress: false
4343
jobs:
4444
publish:

DEVELOPMENT.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,27 @@ These can be set on the command line like so:
4444
* `skipMongodbTests` - does not run mongo related tests
4545
* `skipTests` - no tests will run
4646

47+
## Test slicing
48+
49+
Test classes tagged with `@spock.lang.Tag('some-tag')` can be run separately.\
50+
Tags are inherited from superclasses, so a test class is also included if any of its ancestors is tagged.
51+
52+
Example:
53+
54+
```bash
55+
./gradlew iT -PincludeTestTags=geb
56+
```
57+
58+
Available project properties:
59+
60+
* `includeTestTags` - comma-separated list of test tags to include
61+
* `excludeTestTags` - comma-separated list of test tags to exclude
62+
63+
Example with multiple tags:
64+
65+
```bash
66+
./gradlew iT -PincludeTestTags=geb,api
67+
```
68+
4769
## Start a mongo docker container (containers will start by default)
4870
`docker run -d --name mongo-on-docker -p 27017:27017 mongo`

dependencies.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ ext {
2525
'ant.version' : '1.10.15',
2626
'asciidoctor-gradle-jvm.version': '4.0.5',
2727
'asciidoctorj.version' : '3.0.0',
28-
'asset-pipeline-gradle.version' : '5.0.32',
28+
'asset-pipeline-gradle.version' : '5.0.34',
2929
'byte-buddy.version' : '1.17.7',
3030
'commons-text.version' : '1.13.1',
3131
'directory-watcher.version' : '0.19.1',
@@ -37,7 +37,7 @@ ext {
3737
'jna.version' : '5.17.0',
3838
'jquery.version' : '3.7.1',
3939
'objenesis.version' : '3.4',
40-
'spring-boot.version' : '3.5.13',
40+
'spring-boot.version' : '3.5.14',
4141
]
4242

4343
// Note: the name of the dependency must be the prefix of the property name so properties in the pom are resolved correctly
@@ -67,13 +67,13 @@ ext {
6767
]
6868

6969
bomDependencyVersions = [
70-
'asset-pipeline-bom.version' : '5.0.32',
70+
'asset-pipeline-bom.version' : '5.0.34',
7171
'bootstrap-icons.version' : '1.13.1',
7272
'bootstrap.version' : '5.3.8',
7373
'commons-codec.version' : '1.18.0',
7474
'commons-lang3.version' : '3.20.0',
7575
'geb-spock.version' : '8.0.1',
76-
'groovy.version' : '4.0.30',
76+
'groovy.version' : '4.0.31',
7777
'jackson.version' : '2.19.1',
7878
'jquery.version' : '3.7.1',
7979
'liquibase-hibernate5.version': '4.27.0',

etc/bin/verify-cli-distribution.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ echo "Checking Shell CLI ..."
9191
echo "✅ Generated Shell App"
9292

9393
echo "Checking Forge CLI ..."
94-
./grails-forge-cli create-app -x -g mongodb ForgeApp
94+
./grails-forge-cli create-app -x -g mongodb -f gradle-settings-file ForgeApp
9595
echo "✅ Generated Forge App"
9696

9797
echo "✅✅✅ All cli binary distribution checks passed successfully for Apache Grails ${VERSION}."

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
projectVersion=7.0.10-SNAPSHOT
16+
projectVersion=7.0.11-SNAPSHOT
1717

1818
javaVersion=17
1919

gradle/functional-test-config.gradle

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,20 @@ tasks.withType(Test).configureEach { Test task ->
9595
task.outputs.dir rootProject.layout.buildDirectory.dir('mongo-test-serialize')
9696
}
9797

98-
task.useJUnitPlatform()
98+
task.useJUnitPlatform {
99+
if (project.hasProperty('includeTestTags')) {
100+
// Will only run tests that are tagged with specific tags
101+
// e.g. @spock.lang.Tag('geb')
102+
// Run with: ./gradlew iT -PincludeTestTags=geb (comma-separated list)
103+
includeTags((project.property('includeTestTags') as String).split(',')*.trim() as String[])
104+
}
105+
if (project.hasProperty('excludeTestTags')) {
106+
// Will not run tests that are tagged with specific tags
107+
// e.g. @spock.lang.Tag('geb')
108+
// Run with: ./gradlew iT -PincludeTestTags=geb
109+
excludeTags((project.property('excludeTestTags') as String).split(',')*.trim() as String[])
110+
}
111+
}
99112
task.testLogging {
100113
events('passed', 'skipped', 'failed', 'standardOut', 'standardError')
101114
showExceptions = true

0 commit comments

Comments
 (0)