This is an automated email from the ASF dual-hosted git repository.
pingtimeout pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git
The following commit(s) were added to refs/heads/main by this push:
new 4b3d4d1f7 Generate release vote e-mail as Github Step Summary (#3150)
4b3d4d1f7 is described below
commit 4b3d4d1f7dd549e79b2d53ed69d270b0ff787857
Author: Pierre Laporte <[email protected]>
AuthorDate: Tue Dec 23 15:23:26 2025 +0100
Generate release vote e-mail as Github Step Summary (#3150)
---
.../release-3-build-and-publish-artifacts.yml | 97 ++++++++++++++++++++--
1 file changed, 88 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/release-3-build-and-publish-artifacts.yml
b/.github/workflows/release-3-build-and-publish-artifacts.yml
index 0c759a0bb..dbb4a6701 100644
--- a/.github/workflows/release-3-build-and-publish-artifacts.yml
+++ b/.github/workflows/release-3-build-and-publish-artifacts.yml
@@ -118,6 +118,8 @@ jobs:
needs: prerequisite-checks
permissions:
contents: read
+ outputs:
+ staging_repository_id: ${{
steps.publish-nexus.outputs.staging_repository_id }}
env:
DRY_RUN: ${{ needs.prerequisite-checks.outputs.dry_run }}
git_tag: ${{ needs.prerequisite-checks.outputs.git_tag }}
@@ -198,6 +200,7 @@ jobs:
EOT
- name: Publish and close Apache Nexus staging repository
+ id: publish-nexus
env:
ORG_GRADLE_PROJECT_apacheUsername: ${{ secrets.APACHE_USERNAME }}
ORG_GRADLE_PROJECT_apachePassword: ${{ secrets.APACHE_PASSWORD }}
@@ -207,24 +210,23 @@ jobs:
# Publish artifacts to staging repository
exec_process ./gradlew publishToApache closeApacheStagingRepository
-Prelease -PuseGpgAgent --info 2>&1 | tee gradle_publish_output.txt
- # Extract staging repository ID and URL from Gradle output
- staging_repo_id=""
- staging_repo_url=""
-
- # Look for staging repository ID in the output
+ # Extract staging repository ID from Gradle output
if grep -q "Created staging repository" gradle_publish_output.txt;
then
- staging_repo_id=$(grep "Created staging repository"
gradle_publish_output.txt | sed --regexp-extended "s/^Created staging
repository .([a-z0-9-]+). at (.*)/\1/")
- staging_repo_url=$(grep "Created staging repository"
gradle_publish_output.txt | sed --regexp-extended "s/^Created staging
repository .([a-z0-9-]+). at (.*)/\2/")
+ staging_repository_id=$(grep "Created staging repository"
gradle_publish_output.txt | sed --regexp-extended "s/^Created staging
repository .([a-z0-9-]+). at (.*)/\1/")
+ else
+ staging_repository_id="<NOT EXTRACTED, CHECK LOG>"
fi
+ # Set output for other jobs to consume
+ echo "staging_repository_id=${staging_repository_id}" >>
$GITHUB_OUTPUT
+
cat <<EOT >> $GITHUB_STEP_SUMMARY
## Nexus Staging Repository
Artifacts published and staging repository closed successfully
| Property | Value |
| --- | --- |
- | Staging Repository ID | \`${staging_repo_id:-"Not extracted"}\` |
- | Staging Repository URL | ${staging_repo_url:-"Not extracted"} |
+ | Staging Repository ID | \`${staging_repository_id}\` |
## Summary
🎉 Artifacts built and published successfully:
@@ -413,3 +415,80 @@ jobs:
| Helm package | ✅ Created and signed |
| Apache dist dev repository | ✅ Staged |
EOT
+
+ generate-release-email:
+ name: Generate Release Email Body
+ runs-on: ubuntu-latest
+ needs: [prerequisite-checks, build-and-publish-artifacts, build-docker,
build-and-stage-helm-chart]
+ permissions:
+ contents: read
+ env:
+ DRY_RUN: ${{ needs.prerequisite-checks.outputs.dry_run }}
+ git_tag: ${{ needs.prerequisite-checks.outputs.git_tag }}
+ version_without_rc: ${{
needs.prerequisite-checks.outputs.version_without_rc }}
+ rc_number: ${{ needs.prerequisite-checks.outputs.rc_number }}
+ staging_repository_id: ${{
needs.build-and-publish-artifacts.outputs.staging_repository_id }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6
+ with:
+ fetch-depth: 0
+
+ - name: Setup test environment
+ uses: ./.github/actions/setup-test-env
+
+ - name: Set up environment variables
+ run: |
+ echo "RELEASEY_DIR=$(pwd)/releasey" >> $GITHUB_ENV
+ echo "LIBS_DIR=$(pwd)/releasey/libs" >> $GITHUB_ENV
+
+ - name: Generate release email body
+ run: |
+ source "${LIBS_DIR}/_version.sh"
+
+ # Get current commit SHA
+ commit_sha=$(git rev-parse HEAD)
+
+ cat <<EOT >> $GITHUB_STEP_SUMMARY
+ # Vote e-mail
+
+ ## Subject
+ [VOTE] Release Apache Polaris ${version_without_rc} (rc${rc_number})
+
+ ## Body
+ Hi everyone,
+
+ I propose that we release the following RC as the official Apache
Polaris ${version_without_rc} release.
+
+ This corresponds to the tag: ${git_tag}
+ * https://github.com/apache/polaris/commits/${git_tag}
+ * https://github.com/apache/polaris/tree/${commit_sha}
+
+ The release tarball, signature, and checksums are here:
+ *
https://dist.apache.org/repos/dist/dev/incubator/polaris/${version_without_rc}
+
+ Helm charts are available on:
+ * https://dist.apache.org/repos/dist/dev/incubator/polaris/helm-chart
+
+ NB: you have to build the Docker images locally in order to test
Helm charts.
+
+ You can find the KEYS file here:
+ * https://downloads.apache.org/incubator/polaris/KEYS
+
+ Convenience binary artifacts are staged on Nexus. The Maven
repositories URLs are:
+ *
https://repository.apache.org/content/repositories/${staging_repository_id}/
+
+ Please download, verify, and test according to the release
verification guide, which can be found at:
+ *
https://polaris.apache.org/community/release-guides/release-verification-guide/
+
+ Please vote in the next 72 hours.
+
+ [ ] +1 Release this as Apache polaris ${version_without_rc}
+ [ ] +0
+ [ ] -1 Do not release this because...
+
+ Only PPMC members and mentors have binding votes, but other
community members are encouraged to cast non-binding votes. This vote will pass
if there are 3 binding +1 votes and more binding +1 votes than -1 votes.
+
+ NB: if this vote passes, a new vote has to be started on the
Incubator general mailing list.
+ EOT