Skip to content

Commit 5ce627c

Browse files
amoebakou
andcommitted
GH-45140: [Dev][Release] Release guide improvements (#45141)
### What changes are included in this PR? Updates to the release guide. Mostly changes to make the guide up to date with how release are being done currently. ### Are these changes tested? Previewed locally. ### Are there any user-facing changes? More accurate docs. Fixes #45140 * GitHub Issue: #45140 Lead-authored-by: Bryce Mecum <[email protected]> Co-authored-by: Sutou Kouhei <[email protected]> Signed-off-by: Bryce Mecum <[email protected]>
1 parent 6e3932b commit 5ce627c

File tree

1 file changed

+80
-47
lines changed

1 file changed

+80
-47
lines changed

docs/source/developers/release.rst

Lines changed: 80 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ Release Management Guide
2424
This page provides detailed information on the steps followed to perform
2525
a release. It can be used both as a guide to learn the Apache Arrow release
2626
process 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

2932
Principles
3033
==========
@@ -36,8 +39,15 @@ Preparing for the release
3639
=========================
3740

3841
Before 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.
6777
Before 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+
169197
Create 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,
246278
Be 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

Comments
 (0)