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.