| <!-- |
| ~ Licensed to the Apache Software Foundation (ASF) under one |
| ~ or more contributor license agreements. See the NOTICE file |
| ~ distributed with this work for additional information |
| ~ regarding copyright ownership. The ASF licenses this file |
| ~ to you under the Apache License, Version 2.0 (the |
| ~ "License"); you may not use this file except in compliance |
| ~ with the License. You may obtain a copy of the License at |
| ~ |
| ~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~ |
| ~ Unless required by applicable law or agreed to in writing, |
| ~ software distributed under the License is distributed on an |
| ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| ~ KIND, either express or implied. See the License for the |
| ~ specific language governing permissions and limitations |
| ~ under the License. |
| --> |
| |
| # Release |
| |
| ## Overview |
| |
| 1. Test the revision to be released |
| 2. Prepare RC and vote (detailed later) |
| 3. Publish (detailed later) |
| |
| ### Prepare RC and vote |
| |
| Run `dev/release/release_rc.sh` on a working copy of |
| `git@github.com:apache/iceberg-cpp` not from your fork: |
| |
| ```console |
| $ git clone git@github.com:apache/iceberg-cpp.git && cd iceberg-cpp |
| $ dev/release/release_rc.sh ${VERSION} ${RC} |
| (Send a vote email to dev@iceberg.apache.org. |
| You can use a draft shown by release_rc.sh for the email.) |
| ``` |
| |
| Here is an example to release RC0 of version 0.1.0: |
| |
| ```console |
| $ GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/release_rc.sh 0.1.0 0 |
| ``` |
| |
| The arguments of `release_rc.sh` are the version and the RC number. If RC0 has a problem, we'll increment the RC number such as RC1, RC2 and so on. |
| |
| Requirements to run `release_rc.sh`: |
| |
| * You must be an Apache Iceberg committer or PMC member |
| * You must prepare your PGP key for signing |
| |
| If you don't have a PGP key, https://infra.apache.org/release-signing.html#generate |
| may be helpful. |
| |
| Your PGP key must be published in the KEYS file, which is hosted at: |
| |
| * https://downloads.apache.org/iceberg/KEYS |
| |
| See the header comment of them for how to add a PGP key. |
| |
| If you are a first-time release manager, you need to add your public key to this file. To prevent formatting errors, please use the following commands instead of editing the file manually: |
| |
| + Check out the release distribution directory: |
| |
| ```console |
| $ svn co https://dist.apache.org/repos/dist/release/iceberg |
| $ cd iceberg |
| ``` |
| + Append your GPG public key to the KEYS file. Replace <YOUR_KEY_ID> with your actual GPG key ID. |
| |
| ```console |
| $ echo "" >> KEYS # append a newline |
| $ gpg --list-sigs <YOUR_KEY_ID> >> KEYS # append signatures |
| $ gpg --armor --export <YOUR_KEY_ID> >> KEYS # append public key block |
| $ svn commit -m "Add GPG key for <YOUR_NAME>" |
| ``` |
| |
| ### Publish |
| |
| We need to publish to apache.org to publish a new release. |
| |
| Run `dev/release/release.sh` to publish to apache.org: |
| |
| ```console |
| $ GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/release.sh ${VERSION} ${RC} |
| ``` |
| |
| Add the release to ASF's report database via [Apache Committee Report Helper](https://reporter.apache.org/addrelease.html?iceberg) |
| |
| ### Verify |
| |
| We have a script for verifying a RC. |
| |
| You must install the following to run the script: |
| |
| * `curl` |
| * `gpg` |
| * `shasum` or `sha512sum` |
| * `tar` |
| * `cmake` (3.25 or higher) |
| * C++23 compliant compiler (GCC 14+, Clang 16+, MSVC 2022+) |
| |
| To verify a RC, run the following: |
| |
| ```console |
| $ dev/release/verify_rc.sh ${VERSION} ${RC} |
| ``` |
| |
| If the verification is successful, the message `RC looks good!` is shown. |