| #!/usr/bin/env bash |
| # |
| # 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. |
| |
| set -eu |
| |
| for cmd in git gh svn; do |
| if ! command -v ${cmd} &> /dev/null; then |
| echo "This script requires '${cmd}' but it's not installed. Aborting." |
| exit 1 |
| fi |
| done |
| |
| if [ "$#" -ne 2 ]; then |
| echo "Usage: $0 <version> <rc>" |
| echo " e.g.: $0 0.1.0 0" |
| exit 1 |
| fi |
| |
| version=$1 |
| rc=$2 |
| |
| git_origin_url="$(git remote get-url origin)" |
| repository="${git_origin_url#*github.com?}" |
| repository="${repository%.git}" |
| |
| if [ "${git_origin_url}" != "git@github.com:apache/iceberg-cpp.git" ]; then |
| echo "This script must be ran with a working copy of apache/iceberg-cpp." |
| echo "The origin's URL: ${git_origin_url}" |
| exit 1 |
| fi |
| |
| tag="v${version}" |
| rc_tag="${tag}-rc${rc}" |
| echo "Tagging for release: ${tag}" |
| git tag "${tag}" "${rc_tag}^{}" -m "Release ${tag}" |
| git push origin "${tag}" |
| |
| release_id="apache-iceberg-cpp-${version}" |
| dist_url="https://dist.apache.org/repos/dist/release/iceberg" |
| dist_dev_url="https://dist.apache.org/repos/dist/dev/iceberg" |
| |
| svn \ |
| mv "${dist_dev_url}/${release_id}-rc${rc}/" \ |
| "${dist_url}/${release_id}" \ |
| -m "Apache Iceberg C++ ${version}" |
| |
| svn co "${dist_url}/${release_id}" |
| pushd "${release_id}" |
| |
| gh release create "${tag}" \ |
| --repo "${repository}" \ |
| --title "Apache Iceberg C++ ${version}" \ |
| --generate-notes \ |
| --verify-tag \ |
| *.tar.gz \ |
| *.tar.gz.asc \ |
| *.tar.gz.sha512 |
| popd |
| |
| rm -rf "${release_id}" |
| |
| echo "Keep only the latest versions" |
| old_releases=$( |
| svn ls "${dist_url}" | |
| grep -E '^apache-iceberg-cpp-' | |
| sort --version-sort --reverse | |
| tail -n +2 |
| ) |
| for old_release_version in ${old_releases}; do |
| echo "Remove old release ${old_release_version}" |
| svn \ |
| delete \ |
| -m "Remove old Apache Iceberg C++ release: ${old_release_version}" \ |
| "https://dist.apache.org/repos/dist/release/iceberg/${old_release_version}" |
| done |
| |
| echo "Success! The release is available here:" |
| echo " https://dist.apache.org/repos/dist/release/iceberg/${release_id}" |
| echo |
| echo "Add this release to ASF's report database:" |
| echo " https://reporter.apache.org/addrelease.html?iceberg" |
| |
| echo "Draft email for announcement" |
| echo "" |
| echo "---------------------------------------------------------" |
| cat <<MAIL |
| To: dev@iceberg.apache.org |
| CC: announce@apache.org |
| Subject: [ANNOUNCE] Apache Iceberg C++ ${version} released |
| |
| Hello everyone, |
| |
| I'm pleased to announce the release of Apache Iceberg C++ ${version}! |
| |
| Apache Iceberg is an open table format for huge analytic datasets. |
| Iceberg delivers high query performance for tables with tens of |
| petabytes of data, along with atomic commits, concurrent writes, and |
| SQL-compatible table evolution. |
| |
| This release can be downloaded from [1]. |
| |
| Release notes are available at [2]. |
| |
| Thanks to everyone for contributing! |
| |
| [1] https://dist.apache.org/repos/dist/release/iceberg/apache-iceberg-cpp-${version} |
| [2] https://github.com/apache/iceberg-cpp/releases/tag/v${version} |
| MAIL |
| echo "---------------------------------------------------------" |