diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
new file mode 100644
index 00000000000..92d20e03fe4
--- /dev/null
+++ b/.github/release-drafter.yml
@@ -0,0 +1,75 @@
+# See https://github.com/release-drafter/release-drafter#configuration-options
+name-template: 'v$RESOLVED_VERSION'
+tag-template: 'v$RESOLVED_VERSION'
+# Filter previous releases to consider only those with the target matching the current branch
+filter-by-commitish: true
+tag-prefix: REL
+exclude-labels:
+ - 'skip-changelog'
+categories:
+ - title: '🚀 Features'
+ labels:
+ - 'feature'
+ - 'enhancement'
+ - title: '🐛 Bug Fixes'
+ labels:
+ - 'fix'
+ - 'bugfix'
+ - 'bug'
+ - 'defect'
+ - title: '📝 Documentation'
+ labels:
+ - 'documentation'
+ - title: '🧰 Maintenance'
+ label: 'chore'
+ - title: '⬆️ Dependencies'
+ collapse-after: 8
+ labels:
+ - 'dependencies'
+change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
+change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
+version-resolver:
+ major:
+ labels:
+ - 'major'
+ minor:
+ labels:
+ - 'minor'
+ patch:
+ labels:
+ - 'patch'
+ default: patch
+template: |
+ ## Changes
+
+ $CHANGES
+# See https://github.com/release-drafter/release-drafter#autolabeler
+# This is more like a reference, since auto-labelling PRs seems to require too much privileges
+autolabeler:
+ - label: 'dependencies'
+ files:
+ - 'gradle-wrapper.properties'
+ title:
+ - '/^fix\(deps\)/i'
+ - '/^chore:\s*bump/i'
+ - label: 'chore'
+ files:
+ - '*gradle*'
+ branch:
+ - '/docs{0,1}\/.+/'
+ title:
+ - '/^chore/i'
+ - label: 'documentation'
+ files:
+ - '*.md'
+ - 'docs/**'
+ - label: 'bug'
+ branch:
+ - '/fix\/.+/'
+ title:
+ - '/^fix/i'
+ - label: 'enhancement'
+ branch:
+ - '/feature\/.+/'
+ title:
+ - '/^feat/i'
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
new file mode 100644
index 00000000000..e6905e48f32
--- /dev/null
+++ b/.github/workflows/release-drafter.yml
@@ -0,0 +1,27 @@
+name: Release Drafter
+
+on:
+ push:
+ # branches to consider in the event; optional, defaults to all
+ branches:
+ - master
+ - 'release/**'
+ # pull_request_target allows PR from forks to access secrets, so please NEVER add pull_request_target
+
+jobs:
+ update_release_draft:
+ # Skip release drafts in forks
+ if: github.repository_owner == 'apache'
+ name: Update Release Draft
+ runs-on: ubuntu-latest
+ steps:
+ # Drafts your next Release notes as Pull Requests are merged into "master"
+ - name: Update release body draft
+ uses: release-drafter/release-drafter@569eb7ee3a85817ab916c8f8ff03a5bd96c9c83e # v5
+ id: prepare_release
+ # (Optional) specify config name to use, relative to .github/. Default: release-drafter.yml
+ with:
+ # config-name: my-config.yml
+ disable-autolabeler: true
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 63a3ff9f61e..799b20e8a8f 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -101,6 +101,7 @@ Summary