This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 5.0.x
in repository https://gitbox.apache.org/repos/asf/grails-redis.git

commit 1f2cc42e1feaefab6a11bcacf526d183cba2c3f4
Author: James Daugherty <jdaughe...@jdresources.net>
AuthorDate: Wed Sep 3 16:25:45 2025 -0400

    chore: upload workflow for releases
---
 .asf.yaml                             |   7 --
 .github/vote_templates/announce.txt   |  23 ++++++
 .github/vote_templates/groovy_pmc.txt |  29 +++++++
 .github/vote_templates/staged.txt     |  35 +++++++++
 .github/workflows/release.yml         | 137 +++++++++++++++++++++++++++++++++-
 5 files changed, 221 insertions(+), 10 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
index b7969d5..41f2c9e 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -1,12 +1,5 @@
 github:
   environments:
-    source:
-      required_reviewers:
-        - id: grails-committers
-          type: Team
-        - id: jdaugherty
-          type: User
-      wait_timer: 0
     release:
       required_reviewers:
         - id: grails-committers
diff --git a/.github/vote_templates/announce.txt 
b/.github/vote_templates/announce.txt
new file mode 100644
index 0000000..c469922
--- /dev/null
+++ b/.github/vote_templates/announce.txt
@@ -0,0 +1,23 @@
+The Apache Grails (incubating) community is pleased to announce the release of 
Apache Grails (incubating) Redis Plugin ${VERSION}.
+
+Grails is a powerful Groovy-based web application framework for the JVM built 
on top of Spring Boot that has many plugins to further extend its functionality.
+
+This Redis Plugin release another milestone on our journey to a final 7.0 
release. Users are encouraged to try the milestone to provide early feedback. 
Detailed upgrade instructions are available here: 
https://docs.grails.org/${VERSION}/guide/upgrading.html.
+
+The release notes are available here:
+https://github.com/apache/grails-core/compare/v${VERSION}
+
+For the complete list of changes:
+https://github.com/apache/grails-core/compare/v${PREVIOUS_VERSION}...v${VERSION}
+
+Apache Grails website: https://grails.apache.org/
+
+Download Links: https://grails.apache.org/download.html
+
+Grails Resources:
+- Grails Redis GitHub repo: https://github.com/apache/grails-redis
+- Issues: https://github.com/apache/grails-redis/issues
+- Mailing lists: https://grails.apache.org/community.html
+
+Happy Coding,
+The Apache Grails (incubating) Team
diff --git a/.github/vote_templates/groovy_pmc.txt 
b/.github/vote_templates/groovy_pmc.txt
new file mode 100644
index 0000000..55471fa
--- /dev/null
+++ b/.github/vote_templates/groovy_pmc.txt
@@ -0,0 +1,29 @@
+Hi Everyone,
+The Apache Grails community has voted to approve the release of Apache Grails 
Redis Plugin ${VERSION}.
+
+As the incubation host, we now kindly request the Groovy PMC to review & 
approve our ASF release.
+
+Grails vote thread:
+* <VOTE THREAD LINK>
+
+Vote result thread:
+* https://<TODO>
+
+The tag for this release is:
+* (grails-redis) 
https://github.com/apache/grails-redis/releases/tag/v${VERSION}
+
+The artifacts to be voted on are located as follows (r${DIST_SVN_REVISION}):
+Source release: 
https://dist.apache.org/repos/dist/dev/incubator/grails/redis/${VERSION}/sources
+
+Release artifacts are signed with a key from the following file:
+https://dist.apache.org/repos/dist/release/incubator/grails/KEYS
+
+Please vote on releasing this package as Apache Grails (incubating) Redis 
Plugin ${VERSION}.
+
+Hints on validating checksums/signatures (but replace md5sum with sha512sum):
+https://www.apache.org/info/verification.html
+
+The vote for this release is open for a minimum of 72 hours.
+[ ] +1 Release Apache Grails (incubating) Redis Plugin ${VERSION}
+[ ]  0 I don't have a strong opinion about this, but I assume it's ok
+[ ] -1 Do not release Apache Grails (incubating) Redis Plugin ${VERSION} 
because...
diff --git a/.github/vote_templates/staged.txt 
b/.github/vote_templates/staged.txt
new file mode 100644
index 0000000..98db010
--- /dev/null
+++ b/.github/vote_templates/staged.txt
@@ -0,0 +1,35 @@
+Hi Everyone,
+
+I am happy to start the VOTE thread for an Apache Grails (incubating) Redis 
Plugin release of version ${VERSION}!
+
+Release notes for the release are here:
+https://github.com/apache/grails-redis/releases/tag/v${VERSION}
+
+The tag for this release is:
+https://github.com/apache/grails-redis/releases/tag/v${VERSION}
+Tag commit id: ${VERSION_COMMIT_ID}
+
+The artifacts to be voted on are located as follows (r${DIST_SVN_REVISION}):
+Source release: 
https://dist.apache.org/repos/dist/dev/incubator/grails/redis/${VERSION}/sources
+
+Release artifacts are signed with a key from the following file:
+https://dist.apache.org/repos/dist/release/incubator/grails/KEYS
+
+Please vote on releasing this package as: Apache Grails (incubating) Redis 
Plugin ${VERSION}.
+
+Reminder on ASF release approval requirements for PPMC members:
+https://www.apache.org/legal/release-policy.html#release-approval
+
+Hints on validating checksums/signatures (but replace md5sum with sha512sum):
+https://www.apache.org/info/verification.html
+
+The vote is open for a minimum of 72 hours and passes if a majority of at least
+three +1 PPMC votes are cast.
+
+[ ] +1 Release Apache Grails (incubating) Redis Plugin ${VERSION}
+[ ]  0 I don't have a strong opinion about this, but I assume it's ok
+[ ] -1 Do not release Apache Grails (incubating) Redis Plugin ${VERSION} 
because...
+
+Here is my vote:
+
++1 (binding)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7d0bc28..46fecd8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -112,7 +112,6 @@ jobs:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
   source:
     # to ensure we never publish any build artifacts, run the source 
distribution as a separate build workflow
-    environment: source
     name: "Source Distribution"
     needs: publish
     permissions:
@@ -204,10 +203,142 @@ jobs:
           set -e
           cd ${{ needs.publish.outputs.extract_repository_name }}
           gh release --repo ${{ github.repository }} delete-asset v${{ 
needs.publish.outputs.release_version }} PUBLISHED_ARTIFACTS.txt --yes
+  upload:
+    needs: [ publish, source ]
+    runs-on: ubuntu-24.04
+    permissions:
+      contents: write
+    env:
+      SVN_USERNAME: ${{ secrets.SVC_DIST_GRAILS_USERNAME }}
+      SVN_PASSWORD: ${{ secrets.SVC_DIST_GRAILS_PASSWORD }}
+    steps:
+      - name: "Output Agent IP" # in the event RAO blocks this agent, this can 
be used to debug it
+        run: curl -s https://api.ipify.org
+      - name: "Setup SVN and Tools"
+        run: sudo apt-get install -y subversion subversion-tools tree 
gettext-base
+      - name: "Ensure grails dev folder exists"
+        run: |
+          set -e
+
+          if svn ls https://dist.apache.org/repos/dist/dev/incubator/grails 
--username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive; then
+            echo "Dev Folder 'grails' already exists — skipping creation"
+          else
+            echo "Dev Folder 'grails' does not exist, creating"
+            svnmucc --username "$SVN_USERNAME" --password "$SVN_PASSWORD" 
--non-interactive \
+              mkdir https://dist.apache.org/repos/dist/dev/incubator/grails \
+              -m "Create 'grails' dev folder"
+          fi
+      - name: "Ensure grails redis folder exists"
+        run: |
+          set -e
+
+          if svn ls 
https://dist.apache.org/repos/dist/dev/incubator/grails/redis --username 
"$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive; then
+            echo "Dev Folder 'grails/redis' already exists — skipping creation"
+          else
+            echo "Dev Folder 'grails/redis' does not exist, creating"
+            svnmucc --username "$SVN_USERNAME" --password "$SVN_PASSWORD" 
--non-interactive \
+              mkdir 
https://dist.apache.org/repos/dist/dev/incubator/grails/redis \
+              -m "Create 'grails redis' dev folder"
+          fi
+      - name: "Checkout dev repo"
+        run: |
+          svn checkout --username "$SVN_USERNAME" --password "$SVN_PASSWORD" 
--non-interactive https://dist.apache.org/repos/dist/dev/incubator/grails/redis 
dev-repo
+      - name: "Remove existing dev version"
+        run: |
+          export VERSION="${{ needs.publish.outputs.release_version }}"
+          cd dev-repo
+          if [ -d "$VERSION" ]; then
+            svn delete "$VERSION"
+            svn commit -m "Remove grails redis dev version $VERSION" 
--username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive
+          else
+            echo "No existing dev version $VERSION to remove"
+          fi
+      - name: "Fetch source distributions"
+        run: |
+          export TAG="v${{ needs.publish.outputs.release_version }}"
+          export VERSION="${{ needs.publish.outputs.release_version }}"
+          cd dev-repo
+          mkdir -p $VERSION/sources          
+          cd $VERSION/sources
+          curl -LO 
https://github.com/apache/grails-core/releases/download/$TAG/apache-${{ 
needs.publish.outputs.extract_repository_name }}-$VERSION-incubating-src.zip
+          curl -LO 
https://github.com/apache/grails-core/releases/download/$TAG/apache-${{ 
needs.publish.outputs.extract_repository_name 
}}-$VERSION-incubating-src.zip.sha512
+          curl -LO 
https://github.com/apache/grails-core/releases/download/$TAG/apache-${{ 
needs.publish.outputs.extract_repository_name }}-$VERSION-incubating-src.zip.asc
+          echo "Downloaded the following files:"
+          ls -l
+      - name: "Upload distributions"
+        run: |
+          export TAG="v${{ needs.publish.outputs.release_version }}"
+          export VERSION="${{ needs.publish.outputs.release_version }}"
+          cd dev-repo
+          echo "Adding the following files to SVN:"
+          tree
+          svn add $VERSION --force
+          svn commit -m "Upload grails distribution files for $VERSION" 
--username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive
+          pwd
+      - name: "Store Distribution SVN revision"
+        run: |
+          export VERSION="${{ needs.publish.outputs.release_version }}"
+          cd dev-repo
+          svn info $VERSION > "DIST_SVN_REVISION.txt"
+      - name: "Upload Distribution SVN revision"
+        uses: softprops/action-gh-release@v2
+        with:
+          files: dev-repo/DIST_SVN_REVISION.txt
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      - name: "📥 Checkout repository"
+        uses: actions/checkout@v4
+        with:
+          token: ${{ secrets.GITHUB_TOKEN }}
+          ref: v${{ needs.publish.outputs.release_version }}
+          path: "${{ needs.publish.outputs.extract_repository_name }}"
+      - name: 'Initial Vote Email'
+        env:
+          VERSION: ${{ needs.publish.outputs.release_version }}
+          VERSION_COMMIT_ID: ${{ needs.publish.outputs.commit_hash }}
+        run: |
+          export DIST_SVN_REVISION=$(awk '/Last Changed Rev:/ {print $4}' 
dev-repo/DIST_SVN_REVISION.txt)
+
+          echo "*************************************************"
+          echo "Subject: [VOTE] Release Apache Grails (incubating) Redis 
Plugin ${VERSION}"
+          echo "*************************************************"
+          echo "Body:"
+          echo "*************************************************"
+          cat ${{ needs.publish.outputs.extract_repository_name 
}}/.github/vote_templates/staged.txt | envsubst
+          echo "*************************************************"
+      - name: 'Groovy Vote Email'
+        env:
+          VERSION: ${{ needs.publish.outputs.release_version }}
+          VERSION_COMMIT_ID: ${{ needs.publish.outputs.commit_hash }}
+        run: |
+          export DIST_SVN_REVISION=$(awk '/Last Changed Rev:/ {print $4}' 
dev-repo/DIST_SVN_REVISION.txt)
+
+          echo "*************************************************"
+          echo "Subject: [VOTE] Approval of Apache Grails (incubating) Redis 
Plugin ${VERSION} release by Groovy PMC"
+          echo "*************************************************"
+          echo "Body:"
+          echo "*************************************************"
+          cat ${{ needs.publish.outputs.extract_repository_name 
}}/.github/vote_templates/groovy_pmc.txt | envsubst
+          echo "*************************************************"
+      - name: 'Announcement Email'
+        env:
+          VERSION: ${{ needs.publish.outputs.release_version }}
+          VERSION_COMMIT_ID: ${{ needs.publish.outputs.commit_hash }}
+          PREVIOUS_VERSION: 'TODO_PREVIOUS_VERSION'
+        run: |
+          export DIST_SVN_REVISION=$(awk '/Last Changed Rev:/ {print $4}' 
dev-repo/DIST_SVN_REVISION.txt)
+
+          echo "*************************************************"
+          echo "Subject: [ANNOUNCE] Apache Grails (incubating) Redis Plugin 
${VERSION}"
+          echo "*************************************************"
+          echo "Body:"
+          echo "*************************************************"
+          cat ${{ needs.publish.outputs.extract_repository_name 
}}/.github/vote_templates/announce.txt | envsubst
+          echo "*************************************************"
   docs:
     environment: docs
     name: "Publish Documentation"
-    needs: [publish, source]
+    needs: [publish, source, upload]
     runs-on: ubuntu-latest
     permissions:
       contents: write # required for gradle.properties revert
@@ -241,7 +372,7 @@ jobs:
   release:
     name: "Close Release"
     environment: release
-    needs: [publish, source, docs]
+    needs: [publish, source, upload, docs]
     runs-on: ubuntu-latest
     permissions:
       contents: write # required for gradle.properties revert

Reply via email to