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