You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2022/06/22 20:53:08 UTC

[arrow] branch master updated: ARROW-16666: [Docs][Release] Update release guide to specify new workflow and feature freeze (#13308)

This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 345b7b0864 ARROW-16666: [Docs][Release] Update release guide to specify new workflow and feature freeze (#13308)
345b7b0864 is described below

commit 345b7b08643f87333d1a9862d62e69732494828c
Author: Raúl Cumplido <ra...@gmail.com>
AuthorDate: Wed Jun 22 22:53:00 2022 +0200

    ARROW-16666: [Docs][Release] Update release guide to specify new workflow and feature freeze (#13308)
    
    This is a follow up PR from the following discussion on the mailing list:
    https://lists.apache.org/thread/g6mqpyq2hc11xbgrq2pf653njzy53plt
    
    This is an example of how it looks when built:
    
    ![image](https://user-images.githubusercontent.com/639755/171838185-4910243a-4138-4ca8-8f11-db4a98464119.png)
    
    
    
    Authored-by: Raúl Cumplido <ra...@gmail.com>
    Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
 docs/source/developers/release.rst | 107 ++++++++++++++++++++++++++++---------
 1 file changed, 81 insertions(+), 26 deletions(-)

diff --git a/docs/source/developers/release.rst b/docs/source/developers/release.rst
index 45eabb56f6..0276f262fe 100644
--- a/docs/source/developers/release.rst
+++ b/docs/source/developers/release.rst
@@ -70,41 +70,92 @@ generated properly.
     - Have Docker and docker-compose installed.
 
 
-Creating a Release Candidate
-============================
+Before creating a Release Candidate
+===================================
 
-These are the different steps that are required to create a release candidate.
+Ensure local tags are removed, gpg-agent is set and JIRA tickets are correctly assigned.
 
 .. code-block::
 
-    # Delete the local tag and release branch for RC1 or later
-    git branch -d release-<version>
+    # Delete the local tag for RC1 or later
     git tag -d apache-arrow-<version>
     
     # Setup gpg agent for signing artifacts
     source dev/release/setup-gpg-agent.sh
     
     # Curate the release
-    # The end of the generated report shows the jira tickets with wrong version number assigned.
+    # The end of the generated report shows the JIRA tickets with wrong version number assigned.
     archery release curate <version>
+
+
+Creating a Release Candidate
+============================
+
+These are the different steps that are required to create a Release Candidate.
+
+For the initial Release Candidate, we will create a maintenance branch from master.
+Follow up Release Candidates will update the 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
+-----------------------------------------------------
+
+.. tab-set::
+
+   .. tab-item:: Initial Release Candidate
+
+      .. code-block::
+
+            # Execute the following from an up to date master branch.
+            # This will create a branch locally called maint-X.Y.Z.
+            # X.Y.Z corresponds with the Major, Minor and Patch version number
+            # of the release respectively. As an example 9.0.0
+            archery release --jira-cache /tmp/jiracache cherry-pick X.Y.Z --execute
+            # Push the maintenance branch to the remote repository
+            git push -u apache maint-X.Y.Z
+
+   .. tab-item:: Follow up Release Candidates
+
+      .. code-block::
+
+            # First run in dry-mode to see which commits will be cherry-picked.
+            # If there are commits that we don't want to get applied ensure the version on
+            # JIRA is set to the following release.
+            archery release --jira-cache /tmp/jiracache cherry-pick X.Y.Z --continue
+            # Update the maintenance branch with the previous commits
+            archery release --jira-cache /tmp/jiracache cherry-pick X.Y.Z --continue --execute
+            # Push the updated maintenance branch to the remote repository
+            git push -u apache maint-X.Y.Z
+
+Create the Release Candidate branch from the updated maintenance branch
+-----------------------------------------------------------------------
+
+.. code-block::
+
+    # Start from the updated maintenance branch.
+    git checkout maint-X.Y.Z
     
-    # Checkout release branch
-    # Use master for major releases
-    git checkout -b release-4.0.0 master
-    # Use maintenance branches like maint-4.0.x for patch releases
-    git checkout -b release-4.0.1 maint-4.0.x
-    
-    # Create branch for the release candidate and place the necessary commits then create git tag
+    # The following script will create a branch for the Release Candidate,
+    # place the necessary commits updating the version number and then create a git tag
     # on OSX use gnu-sed with homebrew: brew install gnu-sed (and export to $PATH)
     #
-    # <rc-number> starts at 0 and increments every time the release candidate is burned
+    # <rc-number> starts at 0 and increments every time the Release Candidate is burned
     # so for the first RC this would be: dev/release/01-prepare.sh 4.0.0 5.0.0 0
     dev/release/01-prepare.sh <version> <next-version> <rc-number>
     
-    # Push the release branch and release tag (for RC1 or later the --force flag is required)
-    git push -u apache release-<version>
+    # Push the release tag (for RC1 or later the --force flag is required)
     git push -u apache apache-arrow-<version>
-    
+
+Build source and binaries and submit them
+-----------------------------------------
+
+.. code-block::
+
     # Build the source release tarball
     dev/release/02-source.sh <version> <rc-number>
     
@@ -130,23 +181,27 @@ These are the different steps that are required to create a release candidate.
     # after you complete the script:
     #   https://repository.apache.org/#stagingRepositories
     dev/release/06-java-upload.sh <version> <rc-number>
-    
-    # Automatically verify the release candidate
+
+Verify the Release
+------------------
+
+.. code-block::
+
+    # Automatically verify the Release Candidate
     #
-    # 1. Push the release candidate's branch to the fork
+    # 1. Push the Release Candidate's branch to the fork
     git push --set-upstream origin release-<version>-rc<rc-number>
-    # 2. Open a pull request from the release candidate's branch to the release branch
-    #    https://github.com/apache/arrow/compare/release-<version>...<fork-github-username>:release-<version>-rc<rc-number>
+    # 2. Open a pull request from the Release Candidate's branch to the maintenance branch
+    #    https://github.com/apache/arrow/compare/maint-<version>...<fork-github-username>:release-<version>-rc<rc-number>
     # 3. Create a comment for the pull request to trigger the automatized crossbow verification tasks
     #    @github-actions crossbow submit --group verify-rc-source --group verify-rc-binaries --group verify-rc-wheels --param release=<version> --param rc=<rc-number>
     #
     # See https://github.com/apache/arrow/pull/10126 as an example.
     
-    # Once the automatic verification has passed merge the release candidate's branch to the release branch
-    # may need the --force flag to push the release-<version> branch to the apache remote for RC1 or later
-    git checkout release-<version>
+    # Once the automatic verification has passed merge the Release Candidate's branch to the maintenance branch
+    git checkout maint-<version>
     git merge release-<version>-rc<rc-number>
-    git push apache release-<version>
+    git push apache maint-<version>
     
     # Start the vote thread on dev@arrow.apache.org
     # To regenerate the email template use