@@ -24,7 +24,10 @@ Release Management Guide
2424This page provides detailed information on the steps followed to perform
2525a release. It can be used both as a guide to learn the Apache Arrow release
2626process and as a comprehensive checklist for the Release Manager when
27- performing a release.
27+ performing a release. The person acting as Release Manager must at least have
28+ committer status in order to perform the tasks below. If the Release Manager is
29+ a committer but not a member of the PMC, some tasks will need to be delegated
30+ to a PMC member and these are marked below accordingly.
2831
2932Principles
3033==========
@@ -36,8 +39,15 @@ Preparing for the release
3639=========================
3740
3841Before creating a source release, the Release Manager must ensure that any
39- resolved JIRAs have the appropriate Fix Version set so that the changelog is
40- generated properly.
42+ resolved GitHub issues have the appropriate milestone set so that the changelog
43+ is generated properly.
44+
45+ Note that pull requests without a corresponding GitHub issue won't be detected
46+ by the cherry-pick script and must be cherry-picked manually by the release
47+ manager onto the maintenance branch. Examples include MINOR and Dependabot pull
48+ requests. For this reason, it's encouraged to avoid the need for manual
49+ cherry-picking by creating issues for any pull requests that are merged to the
50+ default branch after the release maintenance branch has been created.
4151
4252.. dropdown :: Requirements
4353 :animate: fade-in-slide-down
@@ -67,7 +77,8 @@ generated properly.
6777Before creating a Release Candidate
6878===================================
6979
70- Ensure local tags are removed, gpg-agent is set and JIRA tickets are correctly assigned.
80+ Ensure local tags are removed, gpg-agent is set and GitHub issues are correctly
81+ assigned.
7182
7283.. code-block ::
7384
@@ -78,7 +89,8 @@ Ensure local tags are removed, gpg-agent is set and JIRA tickets are correctly a
7889 source dev/release/setup-gpg-agent.sh
7990
8091 # Curate the release
81- # The end of the generated report shows the JIRA tickets with wrong version number assigned.
92+ # The end of the generated report shows any GitHub issues with the wrong
93+ # version number assigned.
8294 archery release curate <version>
8395
8496 Ensure a major version milestone for a follow up release is created on GitHub. This will
@@ -149,7 +161,7 @@ Create or update the corresponding maintenance branch
149161 # This will create a branch locally called maint-X.Y.Z.
150162 # X.Y.Z corresponds with the Major, Minor and Patch version number
151163 # of the release respectively. As an example 9.0.0
152- archery release --jira-cache /tmp/jiracache cherry-pick X.Y.Z --execute
164+ archery release cherry-pick X.Y.Z --execute
153165 # Push the maintenance branch to the remote repository
154166 git push -u apache maint-X.Y.Z
155167
@@ -158,14 +170,30 @@ Create or update the corresponding maintenance branch
158170 .. code-block ::
159171
160172 # First run in dry-mode to see which commits will be cherry-picked.
161- # If there are commits that we don't want to get applied ensure the version on
162- # JIRA is set to the following release.
163- archery release --jira-cache /tmp/jiracache cherry-pick X.Y.Z --continue
173+ # If there are commits that we don't want to get applied, ensure the
174+ # milestone on GitHub is set to the following release.
175+ archery release cherry-pick X.Y.Z --continue
164176 # Update the maintenance branch with the previous commits
165- archery release --jira-cache /tmp/jiracache cherry-pick X.Y.Z --continue --execute
177+ archery release cherry-pick X.Y.Z --continue --execute
166178 # Push the updated maintenance branch to the remote repository
167179 git push -u apache maint-X.Y.Z
168180
181+ Optional: Test Before Creating a Release Candidate
182+ --------------------------------------------------
183+
184+ Some release managers prefer to perform testing before creating the first
185+ release candidate to avoid the need to create multiple release candidates within
186+ a given release.
187+
188+ To test before creating a release candiate:
189+
190+ * Create a pull request from the up-to-date maint-X.Y.Z branch onto main
191+ * Title the pull request "WIP: Dummy PR to check maint-X.Y.Z status"
192+ * Comment on the pull request to trigger the relevant Crossbow jobs:
193+
194+ * ``@github-actions crossbow submit --group verify-rc-source ``
195+ * ``@github-actions crossbow submit --group packaging ``
196+
169197Create the Release Candidate branch from the updated maintenance branch
170198-----------------------------------------------------------------------
171199
@@ -178,12 +206,12 @@ Create the Release Candidate branch from the updated maintenance branch
178206 # place the necessary commits updating the version number and then create a git tag
179207 # on OSX use gnu-sed with homebrew: brew install gnu-sed (and export to $PATH)
180208 #
181- # <rc-number> starts at 0 and increments every time the Release Candidate is burned
209+ # <rc-number> starts at 0 and increments every time the Release Candidate is created
182210 # so for the first RC this would be: dev/release/01-prepare.sh 4.0.0 5.0.0 0
183211 dev/release/01-prepare.sh <version> <next-version> <rc-number>
184212
185213 # Push the release candidate tag
186- git push -u apache apache-arrow-<version>rc<rc-number>
214+ git push -u apache apache-arrow-<version>- rc<rc-number>
187215 # Push the release candidate branch in order to trigger verification jobs later
188216 git push -u apache release-<version>-rc<rc-number>
189217
@@ -194,6 +222,7 @@ Build source and binaries and submit them
194222
195223 # Build the source release tarball and create Pull Request with verification tasks
196224 #
225+ # NOTE: This must be run by a PMC member
197226 # NOTE: You need to have GitHub CLI installed to run this script.
198227 dev/release/02-source.sh <version> <rc-number>
199228
@@ -209,13 +238,16 @@ Build source and binaries and submit them
209238
210239 # Sign and upload the binaries
211240 #
241+ # NOTE: This must be run by a PMC member
242+ #
212243 # On macOS the only way I could get this to work was running "echo "UPDATESTARTUPTTY" | gpg-connect-agent" before running this comment
213244 # otherwise I got errors referencing "ioctl" errors.
214245 dev/release/05-binary-upload.sh <version> <rc-number>
215246
216247 # Sign and upload MATLAB artifacts to the GitHub Releases area.
217248 #
218- # Note that you need to have GitHub CLI installed to run this script.
249+ # NOTE: This must be run by a PMC member
250+ # NOTE: You need to have GitHub CLI installed to run this script.
219251 dev/release/06-matlab-upload.sh <version> <rc-number>
220252
221253 # Start verifications for binaries and wheels
@@ -246,8 +278,6 @@ After the release vote, we must undertake many tasks to update source artifacts,
246278Be sure to go through on the following checklist:
247279
248280#. Update the released milestone Date and set to "Closed" on GitHub
249- #. Make the CPP PARQUET related version as "RELEASED" on JIRA
250- #. Start the new version on JIRA for the related CPP PARQUET version
251281#. Merge changes on release branch to maintenance branch for patch releases
252282#. Add the new release to the Apache Reporter System
253283#. Push release tag
@@ -266,36 +296,13 @@ Be sure to go through on the following checklist:
266296#. Update vcpkg port
267297#. Update Conan recipe
268298#. Bump versions
269- #. Update tags for Go modules
270299#. Update docs
271300#. Update version in Apache Arrow Cookbook
272301#. Announce the new release
273302#. Publish release blog posts
274303#. Announce the release on Twitter
275304#. Remove old artifacts
276305
277- .. dropdown :: Mark the released version as "RELEASED" on JIRA
278- :animate: fade-in-slide-down
279- :class-title: sd-fs-5
280- :class-container: sd-shadow-md
281-
282- - Open https://issues.apache.org/jira/plugins/servlet/project-config/ARROW/administer-versions
283- - Click "..." for the release version in "Actions" column
284- - Select "Release"
285- - Set "Release date"
286- - Click "Release" button
287-
288- .. dropdown :: Start the new version on JIRA
289- :animate: fade-in-slide-down
290- :class-title: sd-fs-5
291- :class-container: sd-shadow-md
292-
293- - Open https://issues.apache.org/jira/plugins/servlet/project-config/ARROW/administer-versions
294- - Click "..." for the next version in "Actions" column
295- - Select "Edit"
296- - Set "Start date"
297- - Click "Save" button
298-
299306.. dropdown :: Merge changes on release branch to maintenance branch for patch releases
300307 :animate: fade-in-slide-down
301308 :class-title: sd-fs-5
@@ -588,7 +595,7 @@ Be sure to go through on the following checklist:
588595 :class-title: sd-fs-5
589596 :class-container: sd-shadow-md
590597
591- Open a pull request to vcpkg :
598+ Open a pull request to Conan :
592599
593600 .. code-block :: Bash
594601
@@ -604,8 +611,8 @@ Be sure to go through on the following checklist:
604611 git remote add upstream https://github.com/conan-io/conan-center-index.git
605612 cd -
606613
607- # dev/release/post-17 -conan.sh 10.0.1 ../conan-center-index
608- dev/release/post-17 -conan.sh X.Y.Z < YOUR_CONAN_CENTER_INDEX_FORK>
614+ # dev/release/post-16 -conan.sh 10.0.1 ../conan-center-index
615+ dev/release/post-16 -conan.sh X.Y.Z < YOUR_CONAN_CENTER_INDEX_FORK>
609616
610617 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.
611618
@@ -627,7 +634,8 @@ Be sure to go through on the following checklist:
627634 :class-title: sd-fs-5
628635 :class-container: sd-shadow-md
629636
630- The documentations are generated in the release process. We just need to upload the generated documentations:
637+ Documentation is generated as part of the release process. We just need to
638+ upload the generated documentation:
631639
632640 .. code-block :: Bash
633641
@@ -650,7 +658,8 @@ Be sure to go through on the following checklist:
650658 :class-title: sd-fs-5
651659 :class-container: sd-shadow-md
652660
653- TODO
661+ Follow `the documentation <https://github.com/apache/arrow-cookbook/tree/main/dev/release >`_
662+ in the Apache Arrow Cookbook repository
654663
655664.. dropdown :: Announce the new release
656665 :animate: fade-in-slide-down
@@ -666,16 +675,38 @@ Be sure to go through on the following checklist:
666675 :class-title: sd-fs-5
667676 :class-container: sd-shadow-md
668677
669- TODO
678+ The blog post process isn't automated. The rough set of steps we usually take
679+ are:
670680
671- .. dropdown :: Announce the release on Twitter
681+ * Clone https://github.com/apache/arrow-site.
682+ * Create a new branch off ``main `` for the blog post pull request we're
683+ creating.
684+ * Duplicate a recent blog post entry in the ``_posts `` subfolder and update
685+ the filename and YAML metadata.
686+
687+ * Set the date in the filename and in the YAML metadata to the date that the
688+ release candidate vote thread for the release closed (in GMT).
689+
690+ * *For minor releases only *, remove any section about community updates (new
691+ committers, PMC members, etc).
692+ * Update the remainder of the text as needed
693+ * Create the pull request
694+ * In the pull request, ping contributors in each section requesting help
695+ filling in the details for each section.
696+
697+
698+ .. dropdown :: Announce the release on social media
672699 :animate: fade-in-slide-down
673700 :class-title: sd-fs-5
674701 :class-container: sd-shadow-md
675702
676- Post the release blog post on Twitter from the `@ApacheArrow <https://twitter.com/ApacheArrow >`_ handle.
703+ Post about the release and link to the blog post on social media. The project
704+ has two official accounts:
705+
706+ * Twitter/X: `@ApacheArrow <https://twitter.com/ApacheArrow >`_
707+ * LinkedIn: https://www.linkedin.com/company/apache-arrow/
677708
678- PMC members have access or can request access, after which they can post via ` TweetDeck < https://tweetdeck.twitter.com >`_ .
709+ PMC members have access or can request access to post under these accounts .
679710
680711.. dropdown :: Remove old artifacts
681712 :animate: fade-in-slide-down
@@ -687,3 +718,5 @@ Be sure to go through on the following checklist:
687718 .. code-block :: Bash
688719
689720 dev/release/post-09-remove-old-artifacts.sh
721+
722+ Note: This step must be done by a PMC member.
0 commit comments