This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git
The following commit(s) were added to refs/heads/7.0.x by this push:
new 1fa22e9103 chore: update RELEASE.md for our most recent release
1fa22e9103 is described below
commit 1fa22e91030a54694a4733f4cfb8a5cd726ace89
Author: James Daugherty <[email protected]>
AuthorDate: Wed Sep 17 17:23:33 2025 -0400
chore: update RELEASE.md for our most recent release
---
RELEASE.md | 113 +++++++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 92 insertions(+), 21 deletions(-)
diff --git a/RELEASE.md b/RELEASE.md
index 9ab9f730d2..6edfd20a18 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -49,16 +49,20 @@ During the staging step, we must create a source
distribution & stage any binary
* add the grails wrapper to the `grails-core` release
* add the grails binary distribution (grails, grails-shell-cli, and
grails-forge-cli) to the `grails-core` release
* close the staging repository so the `grails-core` artifacts can be
accessed
+ * generate project checksums & artifact lists to make verification easier
4. (no approval required) The `source` job will:
* download the tagged grails source
* generate a source distribution meeting the ASF requirements
* upload the source distribution to the Github `grails-core` release
+ * remove any temporary artifacts needed for the source distribution creation
5. (no approval required) The `upload` job will:
* Download the source distribution
* Download the binary distributions (wrapper & grails clis)
* upload the source distribution to
https://dist.apache.org/repos/dist/dev/incubator/grails/core/VERSION/sources
* upload the grails-wrapper binary distribution to
https://dist.apache.org/repos/dist/incubator/dev/grails/core/VERSION/distribution
* upload the grails binary distribution to
https://dist.apache.org/repos/dist/incubator/dev/grails/core/VERSION/distribution
(note: this is the sdkman artifact)
+ * upload a file containing the SVN revision for the uploaded artifacts
+ * generate vote email templates for both the Grails PPMC and Groovy PMC
## 2. Verifying Artifacts are Authentic
@@ -73,7 +77,20 @@ For Example:
verify.sh v7.0.0-M4 /tmp/grails-verify
```
-Otherwise, you may follow the subsequent steps in this section to verify each
step individually.
+Please note that this script will perform steps that will require rebuilding
the project & comparing the built artifacts
+to the staged artifacts. Due to OS differences, this can result in
reproducibility issues. For this reason, it's advised
+to run these scripts from an environment similar to the GitHub actions
environment. See the section
+`Appendix: Verification from a Container` for how to launch a container that
closely resembles the GitHub actions
+environment.
+
+If manual verification is desired, the steps below can be followed.
+
+### Manual Verification: Verify the KEYS file matches the file checked into
grails-core
+
+Use `etc/bin/verify-keys.sh` to verify the KEYS file. This script will
download the KEYS file
+from https://dist.apache.org/repos/dist/release/grails/KEYS and compare it to
the KEYS file in this repository. If
+verifying from a downloaded source distribution, and running the verification
script from that distribution, it will
+verify the one inside of the source distribution.
### Manual Verification: Download the Staged Artifacts
@@ -130,6 +147,12 @@ Please note that Grails is officially built on Linux so if
there are differences
There is a dockerfile checked into to assist building in an environment like
GitHub actions. Please see the section
`Appendix: Verification from a Container` for more information.
+### Manual Verification: Running RAT
+
+The license audit can be triggered by running the gradle task `rat`. This will
ensure that license requirements are met:
+
+ ./gradlew rat
+
### Manual Verification: Binary Distribution Verification
Grails has 2 binary distributions:
@@ -219,37 +242,61 @@ After all artifacts are uploaded, verified, and tested,
we can vote on the relea
### Apache Grails Incubating PPMC
-The first vote is conducted on the [Grails dev mailing
list](https://lists.apache.org/[email protected]). The only
valid votes are those on the Apache Grails Incubating PPMC, but the community
is welcome to participate to express their support. The vote template is
generated as part of the release process. See the source upload job for the
generated email.
+The first vote is conducted on the [Grails dev mailing
list](https://lists.apache.org/[email protected]).
+The only valid votes are those on the Apache Grails Incubating PPMC, but the
community is welcome to participate to
+express their support. The vote template is generated as part of the release
process. See the `upload` job in the
+`Release` workflow for the generated email.
### Apache Groovy PMC
-As an incubating project under Apache Groovy, after a minimum of 72 hours and
a successful Grails PPMC vote, the Groovy PMC must vote to approve the Apache
Grails (incubating) release. This vote is held on the [Groovy dev mailing
list](https://lists.apache.org/[email protected]). See the
source upload job for the generated email.
+As an incubating project under Apache Groovy, after a minimum of 72 hours and
a successful Grails PPMC vote, the Groovy
+PMC must vote to approve the Apache Grails (incubating) release. This vote is
held on
+the [Groovy dev mailing
list](https://lists.apache.org/[email protected]). See the
`upload` job in the
+`Release` workflow for the generated email.
## 5. Releasing
-After voting has passed, several steps must be completed to finalize the
release. Please complete these steps in teh order listed below.
+After voting has passed, several steps must be completed to finalize the
release. To make it easier, each of these steps
+is encapsulated by the remaining jobs in the `Release` workflow. For
reference, those steps are documented below. Either
+way, the `release` job should be approved & reviewed before proceeding.
-### Release the Staged Artifacts
+### Confirm Vote Passed
-In repository.apache.org, the staged artifacts must be released by opening the
`grails-core` staging repository and clicking the `Release` button. It took
almost 2 hours for the initial ASF release to publish these jars to Maven
Central.
+Confirm the Grails PPMC & Groovy PMC votes passed with a +1 from at least 3
PPMC members. The `release` job in the
+`Release` workflow will remind you of these steps.
-### Publish `grails-core` documentation
+### Release the Staged Jar files
+
+The `release` job in the `Release` workflow has a step entitled `🚀 Release JAR
files - MANUAL`. You can release the jar
+files by one of 2 ways:
-Open the release workflow in `grails-core` and approve the `Publish
Documentation` step. Wait until finished, and a workflow should eventually
kick off in `grails-doc` to publish the gh-pages branch that was updated.
+1. In repository.apache.org, the staged artifacts must be released by opening
the `grails-core` staging repository and
+ clicking the `Release` button. It took almost 2 hours for the initial ASF
release to publish these jars to Maven
+ Central.
+2. Alternatively, the `release` job in the `Release` workflow will output an
example command line to release the staging
+ repository via the scripts checked into grails-core. Execute the script &
set the placeholder values to release the
+ jar files.
### Move the distributions from `dev` to `release`
-On dist.apache.org, the staged source distribution & binary distributions must
be moved from `dev` to `release`. Per ASF infrastructure, this must be
performed manually, and we are not allowed to automate it via a gated apprvoal
workflow.
+On dist.apache.org, the staged source distribution & binary distributions must
be moved from `dev` to `release`. Per ASF
+infrastructure, this must be performed manually, and we are not allowed to
automate it via a gated approval workflow.
+Either move them via your SVN client or use the checked in script to perform
these actions as your user.
-### Upon move, you will get an email from the ASF reporter
+The `release` job in the `Release` workflow has a step entitled `🚀 Move
Distributions - MANUAL`. This step will output
+an example call to the checked in script to move the distributions.
-Click the link in this email and mark the release published. For example, if
the release is out of core with version `7.0.0-M4`, then the release name with
be `CORE-7.0.0-M4`. Enter the date you moved the distribution artifacts and
report the release.
+### Update ASF Reporter
-### Advertise the release via SDKMAN
+After moving the distributions, you will receive an email from the ASF
reporter. Click the link in the email to mark the
+release as published. The `release` job in the `Release` workflow has a step
to remind you of this.
-In `grails-core`, kick off the step `Release to SDKMAN!` in the release
workflow. This will cause SDKMAN to pull the new version from Maven Central.
+For example, if the release is out of core with version `7.0.0-M4`, then the
release name with be `CORE-7.0.0-M4`. Enter
+the date you moved the distribution artifacts and report the release.
-### Deploy grails-forge-web-netty docker container to Google Cloud Run
+NOTE: Grails as a podling, cannot currently do this.
+
+### Deploy grails-forge so the release is accessible on start.grails.org
On the `grails-core` repository, using the release tag, deploy the
grails-forge-web-netty docker container to Google Cloud Run using one of the
GCP Deploy actions.
@@ -265,6 +312,19 @@ PREV - previous release version
PREV-SNAPSHOT - previous version snapshot
+The `release` job in the `Release` workflow has a step entitled `🚀 Deploy
grails-forge - MANUAL` that will remind you of
+this step.
+
+### Publish `grails-core` documentation
+
+Open the release workflow in `grails-core` and approve the `Publish
Documentation` step. Wait until finished, and a
+workflow should eventually kick off in `grails-doc` to publish the gh-pages
branch that was updated.
+
+### Advertise the release via SDKMAN
+
+In `grails-core`, kick off the step `Release to SDKMAN!` in the release
workflow. This will cause SDKMAN to pull the new
+version from Maven Central.
+
### Close out the `grails-core` release
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 it into the branch after correcting any merge conflict.
@@ -283,19 +343,23 @@ Update the release in `grails-core` to be flagged as
'latest'
### Announce the release
-Announcements should come from your apache email address (see
https://infra.apache.org/committer-email.html) and have an expected format.
The announcement should be sent to `[email protected]`,
`[email protected]`, & `[email protected]`. See the source upload job
for the generated email.
+Announcements should come from your apache email address (see
https://infra.apache.org/committer-email.html) and have an
+expected format. The announcement should be sent to `[email protected]`,
`[email protected]`, &
+`[email protected]`. See the `close` job for a generated email.
# Rollback
In the event a staged artifact needs rolled back, kick off the `Release -
Abort Release` workflow. This can only be done for steps prior to the VOTE.
-## Rollback Nexus Artifacts (Jars)
-
-If another Grails repo needs to drop the staging jars, there exists a workflow
`Release - Drop Nexus Staging` in `grails-core`. The input of this workflow
can be obtained by logging into
[repository.apache.org](https://repository.apache.org/index.html#stagingRepositories)
and finding the staging repository name.
-
-## Manual Rollback Distribution
+This rollback will perform the following:
-To remove the staged distribution, use your SVN credentials to remove the
version directory at
[https://dist.apache.org/repos/dist/dev/incubator/grails/core](https://dist.apache.org/repos/dist/incubator/dev/grails/core)
+1. Drop the configured staging repository based on the release tag. (See
`Appendix: Rollback a Nexus Artifacts (Jars)`
+ for how to do this separately from the abort workflow)
+2. Remove the staged artifacts
+ from
[https://dist.apache.org/repos/dist/dev/incubator/grails/core](https://dist.apache.org/repos/dist/incubator/dev/grails/core)
+3. Cancel the GitHub Action `Release` (this may need to be manually cancelled
depending on the workflow state)
+4. Remove the GitHub Release from GitHub
+5. Remove the Git tag
# Appendix: GPG Configuration
If you wish to verify any artifact manually, you must trust the key used to
build Grails. To do so, it's best to download the KEYS file that was published
to the official location:
@@ -365,3 +429,10 @@ Milestones are used for progress before the release is
considered feature comple
These release type definitions differ from the official [ASF
definitions](https://apache.org/legal/release-policy.html#release-types) in
that our Milestone and Release Candidates go through the same release process
as the final release and are official project releases for public use.
After an RC release has been vetted by the community, then a final release
will follow without a modifier.
+
+## Appendix: Rollback a Nexus Artifacts (Jars)
+
+If a Nexus Repo needs to drop the staging jars, there exists a workflow
`Release - Drop Nexus Staging` in `grails-core`.
+The input of this workflow can be obtained by logging
+into
[repository.apache.org](https://repository.apache.org/index.html#stagingRepositories)
and finding the staging
+repository name to drop.
\ No newline at end of file