Skip to content

Commit 1b67ebd

Browse files
committed
Merge branch '7.0.x' into 7.1.x
2 parents 50b65df + 156eb90 commit 1b67ebd

File tree

8 files changed

+62
-21
lines changed

8 files changed

+62
-21
lines changed

.github/workflows/release.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -521,11 +521,11 @@ jobs:
521521
echo "::group::Manual Grails Forge deployment"
522522
echo "Kick off Forge-* workflow for version ${VERSION} based on the below rules:"
523523
cat <<'EOF'
524-
* RELEASE - GA releases only
525-
* NEXT - Milestones and Release Candidate
526-
* SNAPSHOT - current or next version snapshot
527-
* PREV - previous release version
528-
* PREV-SNAPSHOT - previous version snapshot
524+
* RELEASE - Full Final Releases - https://github.com/apache/grails-core/actions/workflows/forge-deploy-release.yml
525+
* NEXT - Milestones and Release Candidate for Next Release (also Next version snapshot prior to Milestone) - https://github.com/apache/grails-core/actions/workflows/forge-deploy-next.yml
526+
* SNAPSHOT - current or next version snapshot - https://github.com/apache/grails-core/actions/workflows/forge-deploy-snapshot.yml
527+
* PREV - previous release version - https://github.com/apache/grails-core/actions/workflows/forge-deploy-prev.yml
528+
* PREV-SNAPSHOT - previous version snapshot - https://github.com/apache/grails-core/actions/workflows/forge-deploy-prev-snapshot.yml
529529
EOF
530530
echo "::endgroup::"
531531
docs:
@@ -637,6 +637,16 @@ jobs:
637637
echo "::group::Blog Post Creation - MANUAL"
638638
echo "Publish a blog post on https://grails.apache.org/blog/ about the new release [${VERSION}] using the repo https://github.com/apache/grails-static-website"
639639
echo "::endgroup::"
640+
- name: "🌎 MANUAL - Merge Close Release PR"
641+
run: |
642+
echo "::group::Merge Close Release PR - MANUAL"
643+
echo "The last step in the grails-core release workflow will create a merge branch for the original tag with version number and then open a PR to merge back into the next branch. You will need to merge this PR into the branch after correcting any merge conflict."
644+
echo "::endgroup::"
645+
- name: "🌎 MANUAL - deploy the new SNAPSHOT to Forge"
646+
run: |
647+
echo "::group::Deploy the new SNAPSHOT to Forge - MANUAL"
648+
echo "After the Close Release PR is merged, deploy the new SNAPSHOT to Forge via: https://github.com/apache/grails-core/actions/workflows/forge-deploy-snapshot.yml"
649+
echo "::endgroup::"
640650
- name: '📧 Announcement Email'
641651
run: |
642652
echo "::group::Announcement Email"

RELEASE.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,11 @@ Publish the released version to [Grails Forge](https://start.grails.org) using o
297297

298298
Grails Forge organizes deployments into version slots as follows:
299299

300-
- **RELEASE** - GA releases only
301-
- **NEXT** - Milestones and Release Candidate
302-
- **SNAPSHOT** - current or next version snapshot
303-
- **PREV** - previous release version
304-
- **PREV-SNAPSHOT** - previous version snapshot
300+
- **RELEASE** - Full Final Releases - https://github.com/apache/grails-core/actions/workflows/forge-deploy-release.yml
301+
- **NEXT** - Milestones and Release Candidate for Next Release (also Next version snapshot prior to Milestone) - https://github.com/apache/grails-core/actions/workflows/forge-deploy-next.yml
302+
- **SNAPSHOT** - current or next version snapshot - https://github.com/apache/grails-core/actions/workflows/forge-deploy-snapshot.yml
303+
- **PREV** - previous release version - https://github.com/apache/grails-core/actions/workflows/forge-deploy-prev.yml
304+
- **PREV-SNAPSHOT** - previous version snapshot - https://github.com/apache/grails-core/actions/workflows/forge-deploy-prev-snapshot.yml
305305

306306
Use the action whose name matches the slot you want to deploy to.\
307307
In the **“Run workflow/Use workflow from”** dropdown, choose the release tag you just created.
@@ -322,6 +322,8 @@ version from Maven Central.
322322

323323
The last step in the `grails-core` release workflow is to run the `Close Release` step. This will create a merge branch for the original tag with version number and then open a PR to merge back into the next branch. You will need to merge this PR into the branch after correcting any merge conflict.
324324

325+
After this PR is merged, deploy the new SNAPSHOT to Forge via: https://github.com/apache/grails-core/actions/workflows/forge-deploy-snapshot.yml
326+
325327
### Update the `grails-static-website`
326328

327329
On the `grails-static-website` repository:

build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/PublishPlugin.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ class PublishPlugin implements Plugin<Project> {
183183
it.url.set('https://apache.org/')
184184
}
185185
it.developers.set(project.provider { lookupProperty(project, 'pomDevelopers', determineDevelopers(project))})
186-
it.pomCustomization = lookupProperty(project, 'pomCustomization') as Closure
186+
it.pomCustomization.set(project.provider { lookupProperty(project, 'pomCustomization') as Closure })
187187
it.publishTestSources.set(project.provider { lookupProperty(project, 'pomPublishTestSources', false)})
188188
it.testRepositoryPath.set(project.provider { shouldSkipJavaComponent(project) ? null : findRootGrailsCoreDir(project).dir('build/local-maven')})
189189
it.publicationName.set(project.provider { lookupProperty(project, 'pomMavenPublicationName', 'maven')})

dependencies.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ ext {
3030
'commons-text.version' : '1.13.1',
3131
'directory-watcher.version' : '0.19.1',
3232
'gradle-spock.version' : '2.3-groovy-3.0',
33-
'grails-publish-plugin.version' : '0.0.2',
33+
'grails-publish-plugin.version' : '0.0.3-SNAPSHOT',
3434
'jansi.version' : '1.18',
3535
'javaparser-core.version' : '3.27.0',
3636
'jline.version' : '2.14.6',
3737
'jna.version' : '5.17.0',
3838
'jquery.version' : '3.7.1',
3939
'objenesis.version' : '3.4',
4040
'gradle-spock.version' : '2.3-groovy-3.0',
41-
'spring-boot.version' : '3.5.7',
41+
'spring-boot.version' : '3.5.8',
4242
]
4343

4444
// Note: the name of the dependency must be the prefix of the property name so properties in the pom are resolved correctly

etc/bin/verify.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ echo "✅ RAT passed"
109109

110110
echo "Verifying Reproducible Build ..."
111111
set +e # because we have known issues here
112-
verify-reproducible.sh "${DOWNLOAD_LOCATION}"
112+
"${SCRIPT_DIR}/verify-reproducible.sh" "${DOWNLOAD_LOCATION}"
113113
set -e
114114
echo "✅ Reproducible Build Verified"
115115

grails-doc/src/en/guide/upgrading/upgrading60x.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,10 +224,11 @@ To apply and configure the `gradle-jakartaee-migration-plugin` in your `build.gr
224224
.build.gradle
225225
----
226226
plugins {
227-
id 'com.netflix.nebula.jakartaee-migration' version '0.24.0'
227+
id 'com.netflix.nebula.jakartaee-migration' version '1.0.0'
228228
}
229229
230230
jakartaeeMigration {
231+
includeTransform('org.grails.plugins:export')
231232
migrate()
232233
}
233234
----
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Workaround for running Testcontainers 1.x with Docker 29.0.0+
2+
api.version=1.44

grails-test-examples/geb/src/integration-test/groovy/org/demo/spock/PerTestRecordingSpec.groovy

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ class PerTestRecordingSpec extends ContainerGebSpec {
4444
void '(setup) running a second test to create another recording'() {
4545
when: 'visiting another page than the previous test'
4646
to(UploadPage)
47-
47+
48+
and: 'pausing so we can see the page change in the video'
49+
Thread.sleep(500)
50+
4851
then: 'the page loads correctly'
4952
title == 'Upload Test'
5053
}
@@ -77,13 +80,14 @@ class PerTestRecordingSpec extends ContainerGebSpec {
7780
recordingDir != null
7881

7982
when: 'getting all video recording files (mp4 or flv) from the recording directory'
80-
def recordingFiles = recordingDir?.listFiles({ File file ->
81-
isVideoFile(file) && file.name.contains(this.class.simpleName)
82-
} as FileFilter)
83+
def minFileCount = 2 // At least 2 files for the first two test methods
84+
def recordingFiles = waitForRecordingFiles(recordingDir, this.class.simpleName, minFileCount)
85+
def names = recordingFiles*.name.join('\n')
8386

8487
then: 'recording files should exist for each test method'
85-
recordingFiles != null
86-
recordingFiles.length >= 2 // At least 2 files for the first two test methods
88+
recordingFiles.length >= minFileCount
89+
names.contains('setup_running_a_test_to_create_a_recording')
90+
names.contains('setup_running_a_second_test_to_create_another')
8791

8892
and: 'the recording files should have different content'
8993
// Sort by last modified time to get the most recent files
@@ -96,4 +100,26 @@ class PerTestRecordingSpec extends ContainerGebSpec {
96100
private static boolean isVideoFile(File file) {
97101
file.isFile() && (file.name.endsWith('.mp4') || file.name.endsWith('.flv'))
98102
}
103+
104+
private static File[] waitForRecordingFiles(
105+
File recordingDir,
106+
String testClassName,
107+
int minFileCount = 2,
108+
long timeoutMillis = 10_000L,
109+
long pollIntervalMillis = 500L
110+
) {
111+
long deadline = System.currentTimeMillis() + timeoutMillis
112+
File[] recordingFiles = []
113+
while (System.currentTimeMillis() < deadline) {
114+
recordingFiles = recordingDir.listFiles({ file ->
115+
isVideoFile(file) && file.name.contains(testClassName)
116+
} as FileFilter) ?: [] as File[]
117+
118+
if (recordingFiles.length >= minFileCount) {
119+
break
120+
}
121+
sleep(pollIntervalMillis)
122+
}
123+
return recordingFiles
124+
}
99125
}

0 commit comments

Comments
 (0)