Skip to content

Release Process

This guide is for Apache Iceberg committers and PMC members who are managing a release.

Overview

  1. Test the revision to be released
  2. Prepare a release candidate (RC) and start a vote
  3. Publish the release after the vote passes

Prerequisites

  • You must be an Apache Iceberg committer or PMC member
  • Required tools: git, gh (GitHub CLI), gpg, svn
  • A PGP key for signing (see Apache release signing guide)

Setting Up Your PGP Key

Your PGP key must be published in the KEYS file. For first-time release managers:

# Check out the release distribution directory
svn co https://dist.apache.org/repos/dist/release/iceberg
cd iceberg

# Append your GPG public key
echo "" >> KEYS
gpg --list-sigs <YOUR_KEY_ID> >> KEYS
gpg --armor --export <YOUR_KEY_ID> >> KEYS
svn commit -m "Add GPG key for <YOUR_NAME>"

Step 1: Prepare RC and Vote

Run release_rc.sh on a working copy of apache/iceberg-cpp (not your fork):

git clone git@github.com:apache/iceberg-cpp.git && cd iceberg-cpp
GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/release_rc.sh ${VERSION} ${RC}

For example, to release RC0 of version 0.3.0:

GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/release_rc.sh 0.3.0 0

The script will:

  1. Tag the release candidate (e.g., v0.3.0-rc0)
  2. Wait for the GitHub Actions RC workflow to build the source tarball
  3. Download and sign the tarball
  4. Upload to ASF's dev distribution
  5. Print a draft vote email for dev@iceberg.apache.org

If an RC has problems, increment the RC number (RC1, RC2, etc.) and repeat.

Step 2: Publish

After the vote passes (requires 72 hours and at least 3 binding +1 votes), publish the release:

GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/release.sh ${VERSION} ${RC}

The script will:

  1. Create the final release tag (e.g., v0.3.0)
  2. Move the RC artifacts from dev to release distribution
  3. Create a GitHub Release with the source tarball and signatures
  4. Clean up old releases from the distribution directory
  5. Print a draft announcement email

After running the script, add the release to ASF's report database.