Skip to content

Commit ede2da4

Browse files
committed
Merge branch '7.1.x' into 8.0.x
# Conflicts: # .github/workflows/gradle.yml
2 parents 297eb4c + f815025 commit ede2da4

13 files changed

Lines changed: 152 additions & 77 deletions

File tree

.github/workflows/codestyle.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
run: ./gradlew codeStyle
4747
- name: "📤 Upload Failure Reports"
4848
if: always()
49-
uses: actions/upload-artifact@v7.0.0
49+
uses: actions/upload-artifact@v7.0.1
5050
with:
5151
name: core-reports
5252
path: build/reports/codestyle/
@@ -84,7 +84,7 @@ jobs:
8484
run: ./gradlew codeStyle
8585
- name: "📤 Upload Failure Reports"
8686
if: always()
87-
uses: actions/upload-artifact@v7.0.0
87+
uses: actions/upload-artifact@v7.0.1
8888
with:
8989
name: gradle-plugin-reports
9090
path: grails-gradle/build/reports/codestyle/
@@ -122,7 +122,7 @@ jobs:
122122
run: ./gradlew codeStyle
123123
- name: "📤 Upload Failure Reports"
124124
if: always()
125-
uses: actions/upload-artifact@v7.0.0
125+
uses: actions/upload-artifact@v7.0.1
126126
with:
127127
name: forge-reports
128128
path: grails-forge/build/reports/codestyle/

.github/workflows/gradle.yml

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ jobs:
222222
./tmp1/cli/bin/grails-forge-cli --version
223223
- name: "📤 Upload CLI Zip to Workflow Summary Page"
224224
if: ${{ matrix.java == '21' && matrix.indy == false }}
225-
uses: actions/upload-artifact@v7.0.0
225+
uses: actions/upload-artifact@v7.0.1
226226
with:
227227
name: 'apache-grails-SNAPSHOT-bin.zip'
228228
include-hidden-files: true
@@ -377,12 +377,12 @@ jobs:
377377
--no-build-cache
378378
--rerun-tasks
379379
- name: "📤 Upload grails-gradle checksums"
380-
uses: actions/upload-artifact@v7.0.0
380+
uses: actions/upload-artifact@v7.0.1
381381
with:
382382
name: grails-gradle-checksums
383383
path: grails-gradle/build/grails-gradle-checksums.txt
384384
- name: "📤 Upload grails-gradle published artifacts"
385-
uses: actions/upload-artifact@v7.0.0
385+
uses: actions/upload-artifact@v7.0.1
386386
with:
387387
name: grails-gradle-artifacts.txt
388388
path: grails-gradle/build/grails-gradle-artifacts.txt
@@ -428,34 +428,24 @@ jobs:
428428
retry_wait_seconds: 180
429429
command: ./gradlew publish aggregateChecksums aggregatePublishedArtifacts --no-build-cache --rerun-tasks
430430
- name: "📤 Upload grails-core checksums"
431-
uses: actions/upload-artifact@v7.0.0
431+
uses: actions/upload-artifact@v7.0.1
432432
with:
433433
name: grails-core-checksums.txt
434434
path: build/grails-core-checksums.txt
435435
- name: "📤 Upload grails-core published artifacts"
436-
uses: actions/upload-artifact@v7.0.0
436+
uses: actions/upload-artifact@v7.0.1
437437
with:
438438
name: grails-core-artifacts.txt
439439
path: build/grails-core-artifacts.txt
440440
- name: "🔨 Create Grails Wrapper Distribution Zip"
441-
run: >
442-
./gradlew :grails-wrapper:distZip
443-
- name: "✅ Verify grails-wrapper"
444-
if: success()
445-
env:
446-
GRAILS_WRAPPER_ALLOWED_TYPES: 'SNAPSHOT'
447441
run: |
448-
# Pin the wrapper to this branch's snapshot so it doesn't resolve the
449-
# globally latest SNAPSHOT in the Apache repo, which may be compiled
450-
# for a newer Java runtime than this job's JDK.
451-
export PREFERRED_GRAILS_VERSION=$(grep '^projectVersion=' gradle.properties | cut -d'=' -f2)
442+
./gradlew :grails-wrapper:distZip
452443
cp grails-wrapper/build/distributions/apache-grails-wrapper-*.zip build/wrapper.zip
453444
cd build
454445
unzip wrapper -d tmp
455446
mv tmp/apache-grails-wrapper-* tmp/wrapper
456-
./tmp/wrapper/grailsw --version
457447
- name: "📤 Upload Wrapper Zip to Workflow Summary Page"
458-
uses: actions/upload-artifact@v7.0.0
448+
uses: actions/upload-artifact@v7.0.1
459449
with:
460450
name: apache-grails-wrapper-SNAPSHOT-bin
461451
path: build/tmp/wrapper
@@ -491,15 +481,49 @@ jobs:
491481
--no-build-cache
492482
--rerun-tasks
493483
- name: "📤 Upload grails-forge checksums"
494-
uses: actions/upload-artifact@v7.0.0
484+
uses: actions/upload-artifact@v7.0.1
495485
with:
496486
name: grails-forge-checksums
497487
path: grails-forge/build/grails-forge-checksums.txt
498488
- name: "📤 Upload grails-gradle published artifacts"
499-
uses: actions/upload-artifact@v7.0.0
489+
uses: actions/upload-artifact@v7.0.1
500490
with:
501491
name: grails-forge-artifacts.txt
502492
path: grails-forge/build/grails-forge-artifacts.txt
493+
verifyWrapper:
494+
name: "Verify grails-wrapper"
495+
# Verifies the wrapper works end-to-end. Must run after publishForge so that
496+
# grails-cli (which the wrapper resolves at runtime) is available in Nexus.
497+
if: github.repository_owner == 'apache' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
498+
needs: [ publish, publishForge ]
499+
runs-on: ubuntu-24.04
500+
steps:
501+
- name: "Output Agent IP" # in the event RAO blocks this agent, this can be used to debug it
502+
run: curl -s https://api.ipify.org
503+
- name: "📥 Checkout repository"
504+
uses: actions/checkout@v6
505+
- name: "☕️ Setup JDK"
506+
uses: actions/setup-java@v4
507+
with:
508+
distribution: liberica
509+
java-version: 17
510+
- name: "📥 Download Wrapper"
511+
uses: actions/download-artifact@v7.0.0
512+
with:
513+
name: apache-grails-wrapper-SNAPSHOT-bin
514+
path: wrapper
515+
- name: "✅ Verify grails-wrapper"
516+
env:
517+
GRAILS_WRAPPER_ALLOWED_TYPES: 'SNAPSHOT'
518+
run: |
519+
# Pin the wrapper to this branch's snapshot so it doesn't resolve the
520+
# globally latest SNAPSHOT in the Apache repo, which may be compiled
521+
# for a newer Java runtime than this job's JDK.
522+
export PREFERRED_GRAILS_VERSION=$(grep '^projectVersion=' gradle.properties | cut -d'=' -f2)
523+
# actions/download-artifact does not preserve the executable bit, so
524+
# restore it before invoking the wrapper script (see actions/upload-artifact#38).
525+
chmod +x ./wrapper/grailsw
526+
./wrapper/grailsw --version
503527
docs:
504528
if: github.repository_owner == 'apache' && github.event_name == 'push'
505529
needs: [ publish ]
@@ -547,7 +571,7 @@ jobs:
547571
./gradlew grails-doc:build
548572
-PgithubBranch=${{ env.TARGET_BRANCH }}
549573
- name: "📤 Upload Generated Docs to Workflow Result Page"
550-
uses: actions/upload-artifact@v7.0.0
574+
uses: actions/upload-artifact@v7.0.1
551575
with:
552576
name: grails-docs-${{ env.NOW }}.zip
553577
path: ./build/distributions/*.zip

.github/workflows/rat.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
run: ./gradlew rat
5252
- name: Upload RAT HTML report
5353
if: always()
54-
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
54+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
5555
with:
5656
name: rat-report
5757
path: build/reports/rat/index.html

build-logic/settings.gradle

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,40 +18,9 @@
1818
*/
1919

2020
pluginManagement {
21+
apply from: file('../gradle/plugin-repositories.gradle')
2122
repositories {
22-
if (System.getenv('GRAILS_INCLUDE_MAVEN_LOCAL')) {
23-
mavenLocal()
24-
}
25-
mavenCentral()
26-
gradlePluginPortal()
27-
maven {
28-
url = 'https://repository.apache.org/content/groups/snapshots'
29-
content {
30-
includeVersionByRegex('org[.]apache[.]grails[.]gradle.*', '.*', '.*-SNAPSHOT')
31-
}
32-
mavenContent {
33-
snapshotsOnly()
34-
}
35-
}
36-
maven {
37-
url = 'https://central.sonatype.com/repository/maven-snapshots'
38-
content {
39-
includeVersionByRegex('cloud[.]wondrify.*', '.*', '.*-SNAPSHOT')
40-
}
41-
mavenContent {
42-
snapshotsOnly()
43-
}
44-
}
45-
maven {
46-
url = 'https://repository.apache.org/content/groups/staging'
47-
content {
48-
includeModuleByRegex('org[.]apache[.]grails[.]gradle', 'grails-publish')
49-
includeModuleByRegex('org[.]apache[.]groovy', 'groovy.*')
50-
}
51-
mavenContent {
52-
releasesOnly()
53-
}
54-
}
23+
configurePluginRepositories(delegate)
5524
}
5625
}
5726

buildSrc/settings.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ pluginManagement {
2020
includeBuild('../build-logic') {
2121
name = 'build-logic-root'
2222
}
23+
apply from: file('../gradle/plugin-repositories.gradle')
24+
repositories {
25+
configurePluginRepositories(delegate)
26+
}
2327
}
2428

2529
plugins {

gradle/plugin-repositories.gradle

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* https://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
ext.configurePluginRepositories = { RepositoryHandler repositories ->
21+
if (System.getenv('GRAILS_INCLUDE_MAVEN_LOCAL')) {
22+
repositories.mavenLocal()
23+
}
24+
repositories.mavenCentral()
25+
repositories.gradlePluginPortal()
26+
repositories.maven {
27+
url = uri('https://repository.apache.org/content/groups/snapshots')
28+
content {
29+
includeGroup('org.apache.grails.gradle')
30+
}
31+
mavenContent {
32+
snapshotsOnly()
33+
}
34+
}
35+
repositories.maven {
36+
url = uri('https://central.sonatype.com/repository/maven-snapshots')
37+
content {
38+
includeGroupByRegex('cloud[.]wondrify[.].*')
39+
}
40+
mavenContent {
41+
snapshotsOnly()
42+
}
43+
}
44+
repositories.maven {
45+
url = uri('https://repository.apache.org/content/groups/staging')
46+
content {
47+
includeModule('org.apache.grails.gradle', 'grails-publish')
48+
includeModuleByRegex('org[.]apache[.]groovy', 'groovy.*')
49+
}
50+
mavenContent {
51+
releasesOnly()
52+
}
53+
}
54+
}

grails-doc/src/en/ref/Tags - GSP/formActionSubmit.adoc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,18 @@ Creates a submit button that sets the `formaction` attribute, which allows one t
6161

6262
Attributes
6363

64-
* `value` (required) - The caption of the button and name of action when not explicitly defined.
65-
* `id` (optional) - The element id of the input element
66-
* `action` (optional) - The name of the action to use in the link; if not specified the default action will be linked
67-
* `controller` (optional) - The name of the controller to use in the link; if not specified the current controller will be linked
68-
* `namespace` (optional) - The namespace of the controller to use in the link
69-
* `plugin` (optional) - The name of the plugin which provides the controller
70-
* `id` (optional) - The id to use in the link
71-
* `fragment` (optional) - The link fragment (often called anchor tag) to use
72-
* `mapping` (optional) - The link:{guidePath}/theWebLayer.html#namedMappings to use to rewrite the link
73-
* `method` (optional) - The HTTP method specified in the corresponding URL mapping
74-
* `params` (optional) - A map containing URL query parameters for the link
75-
* `url` (optional) - A Map containing the action, controller, id etc.
64+
* `value` (required) - The label shown on the submit button.
65+
* `id` (optional) - The DOM id of the rendered input element.
66+
* `disabled` (optional) - Disables the rendered button when the value evaluates to true.
67+
* `action` (optional) - The name of the action to use in the link; if not specified the default action will be linked.
68+
* `controller` (optional) - The name of the controller to use in the link; if not specified the current controller will be linked.
69+
* `namespace` (optional) - The namespace of the controller to use in the link.
70+
* `plugin` (optional) - The name of the plugin which provides the controller.
71+
* `fragment` (optional) - The link fragment (often called anchor tag) to use.
72+
* `mapping` (optional) - The link:{guidePath}/theWebLayer.html#namedMappings to use to rewrite the link.
73+
* `method` (optional) - The HTTP method specified in the corresponding URL mapping.
74+
* `params` (optional) - A map containing URL query parameters for the link.
75+
* `url` (optional) - A Map containing the action, controller, id, etc. for the generated link. If the target URL needs an `id`, provide it here because the top-level `id` attribute is used for the input element.
7676
* `uri` (optional) - A string for a relative path in the running app.
7777
* `relativeUri` (optional) - Used to specify a uri relative to the current path.
7878
* `absolute` (optional) - If `true` will prefix the link target address with the value of the `grails.serverURL` property from the application configuration, or http://localhost:8080 if there is no setting in the config and not running in production.

grails-forge/buildSrc/settings.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ pluginManagement {
2020
includeBuild('../../build-logic') {
2121
name = 'build-logic-root'
2222
}
23+
apply from: file('../../gradle/plugin-repositories.gradle')
24+
repositories {
25+
configurePluginRepositories(delegate)
26+
}
2327
}
2428

2529
plugins {

grails-forge/settings.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ pluginManagement {
2525
includeBuild('../build-logic') {
2626
name = 'build-logic-root'
2727
}
28+
apply from: file('../gradle/plugin-repositories.gradle')
29+
repositories {
30+
configurePluginRepositories(delegate)
31+
}
2832
}
2933

3034
plugins {

grails-gradle/buildSrc/settings.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ pluginManagement {
2020
includeBuild('../../build-logic') {
2121
name = 'build-logic-root'
2222
}
23+
apply from: file('../../gradle/plugin-repositories.gradle')
24+
repositories {
25+
configurePluginRepositories(delegate)
26+
}
2327
}
2428

2529
plugins {

0 commit comments

Comments
 (0)