|
#!/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 "---------------------------------------------------------" |