This is an automated email from the ASF dual-hosted git repository.
raulcd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 359a600ad9 GH-47058: [Release] Update Release Management Guide to
reflect status in preparation for Arrow 22 (#47474)
359a600ad9 is described below
commit 359a600ad91e36bcd15b970511e097987beb1f48
Author: Raúl Cumplido <[email protected]>
AuthorDate: Fri Sep 5 11:45:50 2025 +0200
GH-47058: [Release] Update Release Management Guide to reflect status in
preparation for Arrow 22 (#47474)
### Rationale for this change
The Release suffered some changes around automated signature and
verification tasks that were not reflected on the Release Management guide.
The C# implementation has also been moved to it own repository, I took the
time to reflect that change on the Release Management guide too.
### What changes are included in this PR?
Update release management guide to cover automated signing of source
artifact and automated trigger for verification tasks.
Remove C# from the Release management guide and post-steps.
### Are these changes tested?
Not necessary but I'll trigger preview docs.
### Are there any user-facing changes?
No
* GitHub Issue: #47058
Authored-by: Raúl Cumplido <[email protected]>
Signed-off-by: Raúl Cumplido <[email protected]>
---
.pre-commit-config.yaml | 8 +--
dev/release/post-07-csharp.sh | 64 -----------------
...rtifacts.sh => post-07-remove-old-artifacts.sh} | 0
dev/release/{post-09-docs.sh => post-08-docs.sh} | 0
.../{post-10-python.sh => post-09-python.sh} | 0
...sions-test.rb => post-10-bump-versions-test.rb} | 4 +-
...1-bump-versions.sh => post-10-bump-versions.sh} | 0
dev/release/{post-12-msys2.sh => post-11-msys2.sh} | 0
.../{post-13-homebrew.sh => post-12-homebrew.sh} | 0
dev/release/{post-14-vcpkg.sh => post-13-vcpkg.sh} | 0
dev/release/{post-15-conan.sh => post-14-conan.sh} | 0
docs/source/developers/release.rst | 81 +++++++++++-----------
12 files changed, 45 insertions(+), 112 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index f545f5c280..c78796d2bf 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -361,8 +361,8 @@ repos:
?^dev/release/07-binary-verify\.sh$|
?^dev/release/binary-recover\.sh$|
?^dev/release/post-03-binary\.sh$|
- ?^dev/release/post-10-docs\.sh$|
- ?^dev/release/post-11-python\.sh$|
+ ?^dev/release/post-08-docs\.sh$|
+ ?^dev/release/post-09-python\.sh$|
?^dev/release/setup-rhel-rebuilds\.sh$|
?^dev/release/utils-generate-checksum\.sh$|
?^python/asv-install\.sh$|
@@ -387,8 +387,8 @@ repos:
?^dev/release/05-binary-upload\.sh$|
?^dev/release/binary-recover\.sh$|
?^dev/release/post-03-binary\.sh$|
- ?^dev/release/post-10-docs\.sh$|
- ?^dev/release/post-11-python\.sh$|
+ ?^dev/release/post-08-docs\.sh$|
+ ?^dev/release/post-09-python\.sh$|
)
- repo: https://github.com/trim21/pre-commit-mirror-meson
rev: v1.6.1
diff --git a/dev/release/post-07-csharp.sh b/dev/release/post-07-csharp.sh
deleted file mode 100755
index f0c71b860e..0000000000
--- a/dev/release/post-07-csharp.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env bash
-# -*- indent-tabs-mode: nil; sh-indentation: 2; sh-basic-offset: 2 -*-
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-set -eux
-
-SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-
-if [ "$#" -ne 1 ]; then
- echo "Usage: $0 <version>"
- exit
-fi
-
-version=$1
-
-: "${GITHUB_REPOSITORY:=apache/arrow}"
-
-if [ -z "${NUGET_API_KEY}" ]; then
- echo "NUGET_API_KEY is empty"
- exit 1
-fi
-
-base_names=()
-base_names+=(Apache.Arrow.${version})
-base_names+=(Apache.Arrow.Flight.${version})
-base_names+=(Apache.Arrow.Flight.AspNetCore.${version})
-base_names+=(Apache.Arrow.Flight.Sql.${version})
-base_names+=(Apache.Arrow.Compression.${version})
-for base_name in "${base_names[@]}"; do
- for extension in nupkg snupkg; do
- path=${base_name}.${extension}
- rm -f ${path}
- curl \
- --fail \
- --location \
- --remote-name \
-
"https://github.com/${GITHUB_REPOSITORY}/releases/download/apache-arrow-${version}/${path}"
- done
- dotnet nuget push \
- ${base_name}.nupkg \
- -k ${NUGET_API_KEY} \
- -s https://api.nuget.org/v3/index.json
- rm -f ${base_name}.{nupkg,snupkg}
-done
-
-echo "Success! The released NuGet package is available here:"
-echo " https://www.nuget.org/packages/Apache.Arrow/${version}"
diff --git a/dev/release/post-08-remove-old-artifacts.sh
b/dev/release/post-07-remove-old-artifacts.sh
similarity index 100%
rename from dev/release/post-08-remove-old-artifacts.sh
rename to dev/release/post-07-remove-old-artifacts.sh
diff --git a/dev/release/post-09-docs.sh b/dev/release/post-08-docs.sh
similarity index 100%
rename from dev/release/post-09-docs.sh
rename to dev/release/post-08-docs.sh
diff --git a/dev/release/post-10-python.sh b/dev/release/post-09-python.sh
similarity index 100%
rename from dev/release/post-10-python.sh
rename to dev/release/post-09-python.sh
diff --git a/dev/release/post-11-bump-versions-test.rb
b/dev/release/post-10-bump-versions-test.rb
similarity index 99%
rename from dev/release/post-11-bump-versions-test.rb
rename to dev/release/post-10-bump-versions-test.rb
index 0184179fb3..8eb0d1bddd 100644
--- a/dev/release/post-11-bump-versions-test.rb
+++ b/dev/release/post-10-bump-versions-test.rb
@@ -75,12 +75,12 @@ class PostBumpVersionsTest < Test::Unit::TestCase
case bump_type
when :minor, :patch
sh(env,
- "dev/release/post-11-bump-versions.sh",
+ "dev/release/post-10-bump-versions.sh",
released_version,
@release_version)
else
sh(env,
- "dev/release/post-11-bump-versions.sh",
+ "dev/release/post-10-bump-versions.sh",
released_version,
@next_version)
end
diff --git a/dev/release/post-11-bump-versions.sh
b/dev/release/post-10-bump-versions.sh
similarity index 100%
rename from dev/release/post-11-bump-versions.sh
rename to dev/release/post-10-bump-versions.sh
diff --git a/dev/release/post-12-msys2.sh b/dev/release/post-11-msys2.sh
similarity index 100%
rename from dev/release/post-12-msys2.sh
rename to dev/release/post-11-msys2.sh
diff --git a/dev/release/post-13-homebrew.sh b/dev/release/post-12-homebrew.sh
similarity index 100%
rename from dev/release/post-13-homebrew.sh
rename to dev/release/post-12-homebrew.sh
diff --git a/dev/release/post-14-vcpkg.sh b/dev/release/post-13-vcpkg.sh
similarity index 100%
rename from dev/release/post-14-vcpkg.sh
rename to dev/release/post-13-vcpkg.sh
diff --git a/dev/release/post-15-conan.sh b/dev/release/post-14-conan.sh
similarity index 100%
rename from dev/release/post-15-conan.sh
rename to dev/release/post-14-conan.sh
diff --git a/docs/source/developers/release.rst
b/docs/source/developers/release.rst
index 1ff227ac03..4a287a6281 100644
--- a/docs/source/developers/release.rst
+++ b/docs/source/developers/release.rst
@@ -38,7 +38,18 @@ The Apache Arrow Release follows the guidelines defined at
the
Preparing for the release
=========================
-Before creating a source release, the Release Manager must ensure that any
+In advance to the Release date the Release Manager communicates with the
community
+usually via Zulip, Mailing List or the bi-weekly community call about the
+upcoming release and proposes a feature freeze date.
+
+The feature freeze date is the date the maintenance branch is created and
+from that point no new features are allowed to be added to the release, unless
there
+is community consensus to allow it, and only bug fixes will be accepted.
+
+Once the feature freeze is in place issues labelled as ``blocker`` must be
resolved before
+the first release candidate can be created.
+
+Before creating a release candidate, the Release Manager must ensure that any
resolved GitHub issues have the appropriate milestone set so that the changelog
is generated properly.
@@ -58,7 +69,7 @@ default branch after the release maintenance branch has been
created.
- Install the :ref:`Archery <archery>` utility which is required for the
release.
- You must not have any arrow-cpp or parquet-cpp environment variables
defined except CC or CXX if you want to build with something other than GCC by
default (e.g. clang).
- - A GPG key in the Apache Web of Trust to sign artifacts. This will have
to be cross signed by other Apache committers/PMC members. If you have multiple
GPG keys, you must set the correct GPG key ID in ``~/.gnupg/gpg.conf`` by
adding:
+ - A GPG key in the Apache Web of Trust to sign binary artifacts. This will
have to be cross signed by other Apache committers/PMC members. If you have
multiple GPG keys, you must set the correct GPG key ID in ``~/.gnupg/gpg.conf``
by adding:
.. code-block::
@@ -71,6 +82,7 @@ default branch after the release maintenance branch has been
created.
- Create dev/release/.env from dev/release/.env.example. See the comments
in dev/release/.env.example how to set each variable.
- Setup :ref:`Crossbow<Crossbow>` as defined.
- Have Docker and Docker Compose installed.
+ - Have GitHub CLI installed.
Before creating a Release Candidate
@@ -84,7 +96,7 @@ assigned.
# Delete the local tag for RC1 or later
git tag -d apache-arrow-<version>
- # Setup gpg agent for signing artifacts
+ # Setup gpg agent for signing binary artifacts
source dev/release/setup-gpg-agent.sh
# Curate the release
@@ -130,7 +142,7 @@ Creating a Release Candidate
These are the different steps that are required to create a Release Candidate.
For the initial Release Candidate on a major release, we will create a
maintenance
-branch from main.
+branch from main. This is done on the feature freeze date.
Follow up Release Candidates will update the maintenance branch by
cherry-picking
specific commits.
@@ -142,11 +154,6 @@ a maint-15.0.2 we will create it from maint-15.0.1. Once
the maintenance branch
created we will update the created maintenance branch by cherry-picking
specific
commits.
-We have implemented a Feature Freeze policy between Release Candidates.
-This means that, in general, we should only add bug fixes between Release
Candidates.
-In rare cases, critical features can be added between Release Candidates, if
-there is community consensus.
-
Create or update the corresponding maintenance branch
-----------------------------------------------------
@@ -214,12 +221,19 @@ Create the Release Candidate branch from the updated
maintenance branch
# Push the release candidate branch in order to trigger verification jobs
later
git push -u upstream release-<version>-rc<rc-number>
+
+Once the tag is created the GitHub Actions workflow on ``verify-rc.yml`` will
be triggered to verify
+the release candidate.
+
+The ``release_candidate.yml`` workflow will also be triggered which will sign
the source code
+for the release and will create a GitHub pre-release with the corresponding
source and signatures.
+
Build source and binaries and submit them
-----------------------------------------
.. code-block::
- # Build the source release tarball and create Pull Request with
verification tasks
+ # Waits for previous workflows to finish and uploads source and signatures
to SVN.
#
# NOTE: This must be run by a PMC member
# NOTE: You need to have GitHub CLI installed to run this script.
@@ -287,7 +301,6 @@ Be sure to go through on the following checklist:
#. Update Homebrew packages
#. Update MSYS2 package
#. Upload RubyGems
-#. Upload C# packages
#. Update conda recipes
#. Upload wheels/sdist to pypi
#. Update R packages
@@ -419,8 +432,8 @@ Be sure to go through on the following checklist:
git remote add <YOUR_GITHUB_ID>
[email protected]:<YOUR_GITHUB_ID>/homebrew-core.git
cd -
- # dev/release/post-13-homebrew.sh 10.0.0 kou
- dev/release/post-13-homebrew.sh X.Y.Z <YOUR_GITHUB_ID>
+ # dev/release/post-12-homebrew.sh 10.0.0 kou
+ dev/release/post-12-homebrew.sh X.Y.Z <YOUR_GITHUB_ID>
This script pushes a ``apache-arrow-X.Y.Z`` branch to your
``Homebrew/homebrew-core`` fork. You need to create a pull request from the
``apache-arrow-X.Y.Z`` branch with ``apache-arrow, apache-arrow-glib: X.Y.Z``
title on your Web browser.
@@ -445,8 +458,8 @@ Be sure to go through on the following checklist:
git remote add upstream https://github.com/msys2/MINGW-packages.git
cd -
- # dev/release/post-12-msys2.sh 10.0.0 ../MINGW-packages
- dev/release/post-12-msys2.sh X.Y.Z <YOUR_MINGW_PACKAGES_FORK>
+ # dev/release/post-11-msys2.sh 10.0.0 ../MINGW-packages
+ dev/release/post-11-msys2.sh X.Y.Z <YOUR_MINGW_PACKAGES_FORK>
This script pushes a ``arrow-X.Y.Z`` branch to your
``msys2/MINGW-packages`` fork. You need to create a pull request from the
``arrow-X.Y.Z`` branch with ``arrow: Update to X.Y.Z`` title on your Web
browser.
@@ -473,22 +486,6 @@ Be sure to go through on the following checklist:
# dev/release/post-06-ruby.sh 10.0.0
dev/release/post-06-ruby.sh X.Y.Z
-.. dropdown:: Update C# packages
- :animate: fade-in-slide-down
- :class-title: sd-fs-5
- :class-container: sd-shadow-md
-
- You need an account on https://www.nuget.org/. You need to join owners of
Apache.Arrow package. Existing owners can invite you to the owners at
https://www.nuget.org/packages/Apache.Arrow/Manage .
-
- You need to create an API key at https://www.nuget.org/account/apikeys to
upload from command line.
-
- Install the latest .NET Core SDK from https://dotnet.microsoft.com/download
.
-
- .. code-block:: Bash
-
- # NUGET_API_KEY=YOUR_NUGET_API_KEY dev/release/post-07-csharp.sh 10.0.0
- NUGET_API_KEY=<your NuGet API key> dev/release/post-07-csharp.sh X.Y.Z
-
.. dropdown:: Upload wheels/sdist to PyPI
:animate: fade-in-slide-down
:class-title: sd-fs-5
@@ -500,8 +497,8 @@ Be sure to go through on the following checklist:
.. code-block:: Bash
- # dev/release/post-10-python.sh 10.0.0
- dev/release/post-10-python.sh <version>
+ # dev/release/post-09-python.sh 10.0.0
+ dev/release/post-09-python.sh <version>
.. dropdown:: Update R packages
:animate: fade-in-slide-down
@@ -564,8 +561,8 @@ Be sure to go through on the following checklist:
git remote add upstream https://github.com/microsoft/vcpkg.git
cd -
- # dev/release/post-14-vcpkg.sh 10.0.0 ../vcpkg
- dev/release/post-14-vcpkg.sh X.Y.Z <YOUR_VCPKG_FORK>
+ # dev/release/post-13-vcpkg.sh 10.0.0 ../vcpkg
+ dev/release/post-13-vcpkg.sh X.Y.Z <YOUR_VCPKG_FORK>
This script pushes a ``arrow-X.Y.Z`` branch to your ``microsoft/vcpkg``
fork. You need to create a pull request from the ``arrow-X.Y.Z`` branch with
``[arrow] Update to X.Y.Z`` title on your Web browser.
@@ -590,8 +587,8 @@ Be sure to go through on the following checklist:
git remote add upstream
https://github.com/conan-io/conan-center-index.git
cd -
- # dev/release/post-15-conan.sh 10.0.1 ../conan-center-index
- dev/release/post-15-conan.sh X.Y.Z <YOUR_CONAN_CENTER_INDEX_FORK>
+ # dev/release/post-14-conan.sh 10.0.1 ../conan-center-index
+ dev/release/post-14-conan.sh X.Y.Z <YOUR_CONAN_CENTER_INDEX_FORK>
This script pushes a ``arrow-X.Y.Z`` branch to your
``conan-io/conan-center-index`` fork. You need to create a pull request from
the ``arrow-X.Y.Z`` branch on your Web browser.
@@ -605,8 +602,8 @@ Be sure to go through on the following checklist:
# You can run the script with BUMP_TAG=0 and BUMP_PUSH=0
# this will avoid default pushing to main and pushing the tag
# but you will require to push manually after reviewing the commits.
- # dev/release/post-11-bump-versions.sh 10.0.0 11.0.0
- dev/release/post-11-bump-versions.sh X.Y.Z NEXT_X.NEXT_Y.NEXT_Z
+ # dev/release/post-10-bump-versions.sh 10.0.0 11.0.0
+ dev/release/post-10-bump-versions.sh X.Y.Z NEXT_X.NEXT_Y.NEXT_Z
.. dropdown:: Update docs
:animate: fade-in-slide-down
@@ -627,8 +624,8 @@ Be sure to go through on the following checklist:
git remote add upstream [email protected]:apache/arrow-site.git
cd -
- # dev/release/post-09-docs.sh 10.0.0 9.0.0
- dev/release/post-09-docs.sh X.Y.Z PREVIOUS_X.PREVIOUS_Y.PREVIOUS_Z
+ # dev/release/post-08-docs.sh 10.0.0 9.0.0
+ dev/release/post-08-docs.sh X.Y.Z PREVIOUS_X.PREVIOUS_Y.PREVIOUS_Z
This script pushes a ``release-docs-X.Y.Z`` branch to your ``arrow-site``
fork. You need to create a Pull Request and use the ``asf-site`` branch as base
for it.
@@ -696,6 +693,6 @@ Be sure to go through on the following checklist:
.. code-block:: Bash
- dev/release/post-08-remove-old-artifacts.sh
+ dev/release/post-07-remove-old-artifacts.sh
Note: This step must be done by a PMC member.