Release#

Principles#

The Apache Arrow Release follows the guidelines defined at the Apache Software Foundation Release Policy.

Prepare#

Some steps of the release require being a committer or a PMC member.

  • 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. You must set your GPG key ID in dev/release/.env (see dev/release/.env.example for a template).

  • The GPG key needs to be added to this Subversion repository for dev and Subversion repository for release.

  • An Artifactory API key (log in with your ASF credentials, then generate it from your profile in the upper-right). You must set the Artifactory API key in dev/release/.env (see dev/release/.env.example for a template).

  • A GitHub personal access token that has at lease workflow scope. You must set the GitHub personal access token in dev/release/.env (see dev/release/.env.example for a template).

  • Clone apache/arrow and prepare apache/arrow’s dev/release/.env (see dev/release/.env.example for a template) like apache/arrow-flight-sql-postgresql’s dev/release/.env.

Create a RC#

Prepare a new RC when you create a first RC:

rake release:rc:prepare ARROW_SOURCE=/path/to/apache/arrow/repository/

You need to specify your cloned apache/arrow repository.

This creates a prepare-${VERSION} branch on local repository. You need to push it and open a new pull request for it.

Tag for a new RC after the pull request is merged:

rake release:rc:tag

This creates a new tag for the new RC. You check it and push to apache/arrow-flight-sql-postgresql.

Artifacts for the new RC are built automatically on GitHub Actions.

Sign these artifacts:

rake release:rc:sign

Note that you don’t need to wait for finishing GitHub Actions jobs before you run the above command line. Because the above command line waits for finishing GitHub Actions jobs automatically.

Upload Linux packages:

rake release:rc:linux ARROW_SOURCE=/path/to/apache/arrow/repository/

You need to specify your cloned apache/arrow repository. You must prepare its dev/release/.env (not only apache/arrow-flight-sql-postgresql’s dev/release/.env.)

Re-run RC verify CI jobs on GitHub Actions:

rake release:rc:verify

Start a vote thread for the new RC on dev@arrow.apache.org. You can generate a vote e-mail template:

rake release:vote

Approval requires a net of 3 +1 votes from PMC members. A release cannot be vetoed.

How to verify#

Install dependencies#

At minimum, you will need:

  • Apache Arrow C++ (Apache Arrow Flight SQL must be enabled)

  • C++ compiler

  • Git

  • GnuPG

  • Meson

  • Ninja

  • PostgreSQL 15 or later

  • cURL

  • jq

  • shasum (built into macOS) or sha256sum/sha512sum (on Linux)

Verify#

Clone the project:

git clone https://github.com/apache/arrow-flight-sql-postgresql.git

Run the verification script:

cd arrow-flight-sql-postgresql
# Pass the version and the RC number.
# This stops after build is succeeded. You need to verify manually after it.
# See "Hints" the script shows what you do.
dev/release/verify-rc.sh 0.1.0 1

These environment variables may be helpful:

  • ARROW_TMPDIR=/path/to/directory to specify the temporary directory used. Using a fixed directory can help avoid repeating the same setup and build steps if the script has to be run multiple times.

  • TEST_SOURCE_MANUAL=0 to disable manual verification.

Once finished and once the script passes, reply to the mailing list vote thread with a +1 or a -1.

Post-release tasks#

After the release vote, we must undertake the following tasks:

Publish artifacts:

rake release:rc:publish ARROW_SOURCE=/path/to/apache/arrow/repository/

This command line opens Apache reporter by your Web browser. Don’t forget to register the new release by the form in the page.

This command line creates the tag for the new release but doesn’t push it automatically by default. Don’t forget to push it.

Publish release blog post. The following command line generates the blog post outline, then fill out outline and create a PR on apache/arrow-site:

rake release:announce:blog PREVIOUS_VERSION=X.Y.Z

Announce the new release on mailing lists. The following command line generates the announce e-mail outline, then fill out outline and send the announce e-mail to announce@apache.org, user@arrow.apache.org and dev@arrow.apache.org. You must use your @apache.org e-mail address to send an e-mail to announce@apache.org:

rake release:announce:mail

Announce the new release on pgsql-announce@postgresql.org.

You need to create your PostgreSQL community account: https://www.postgresql.org/account/

You need to join the Apache Arrow organization on PostgreSQL community. TODO: Create it.

The following command line generates the announce e-mail outline, then fill out outline and submit it to https://www.postgresql.org/account/edit/news/ :

rake release:announce:postgresql

Bump version:

rake version:bump NEW_VERSION=X.Y.Z