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 <raulcumpl...@gmail.com>
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 <raulcumpl...@gmail.com>
    Signed-off-by: Raúl Cumplido <raulcumpl...@gmail.com>
---
 .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> 
g...@github.com:<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 g...@github.com: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.

Reply via email to