Skip to content

Commit

Permalink
chore: set up release process (apache#174)
Browse files Browse the repository at this point in the history
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
  • Loading branch information
lidavidm and kou authored Dec 19, 2022
1 parent 1568815 commit 9f3c283
Show file tree
Hide file tree
Showing 30 changed files with 1,243 additions and 22 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/packaging-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ on:
branches-ignore:
- '**'
tags:
- 'adbc-*-rc*'
- 'apache-arrow-adbc-*-rc*'
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
Expand Down
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,16 @@
# specific language governing permissions and limitations
# under the License.

# Release artifacts
apache-arrow-adbc-*.tar.gz
apache-arrow-adbc-*.tar.gz.asc
apache-arrow-adbc-*.tar.gz.sha256
apache-arrow-adbc-*.tar.gz.sha512
apache-rat-*.jar
arrow-src.tar
arrow-src.tar.gz
dev/release/.env
filtered_rat.txt
packages/
rat.txt

# Compiled source
*.a
Expand Down
1 change: 1 addition & 0 deletions ci/conda_env_cpp.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ gmock>=1.10.0
gtest>=1.10.0
libpq
ninja
pkg-config
libsqlite
pkg-config
3 changes: 3 additions & 0 deletions ci/conda_env_dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@
# specific language governing permissions and limitations
# under the License.

commitizen
gh
pre-commit
twine
8 changes: 2 additions & 6 deletions ci/scripts/cpp_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,8 @@ test_subproject() {

pushd "${build_dir}/${subproject}"

if [[ "${subproject}" = "driver_manager" ]]; then
# macOS will not propagate DYLD_LIBRARY_PATH through a subprocess
./adbc-driver-manager-test
else
ctest --output-on-failure --no-tests=error
fi
# macOS will not propagate DYLD_LIBRARY_PATH through a subprocess
"./adbc-$(echo ${subproject} | sed "s|[/_]|-|g")-test"

popd
}
Expand Down
27 changes: 27 additions & 0 deletions dev/release/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 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.

# The GPG key ID to sign artifacts. The GPG key ID must be registered
# to both of the followings:
#
# * https://dist.apache.org/repos/dist/dev/arrow/KEYS
# * https://dist.apache.org/repos/dist/release/arrow/KEYS
#
# See these files how to import your GPG key ID to these files.
#
# You must set this.
#GPG_KEY_ID=08D3564B7C6A9CAFBFF6A66791D18FCF079F8007
67 changes: 67 additions & 0 deletions dev/release/01-prepare.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/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 -ue

SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

if [ "$#" -ne 3 ]; then
echo "Usage: $0 <version> <next_version> <rc-num>"
exit 1
fi

. $SOURCE_DIR/utils-prepare.sh

version=$1
next_version=$2
next_version_snapshot="${next_version}-SNAPSHOT"
rc_number=$3

release_candidate_tag="apache-arrow-adbc-${version}-rc${rc_number}"

if [[ $(git tag -l "${release_candidate_tag}") ]]; then
next_rc_number=$(($rc_number+1))
echo "Tag ${release_candidate_tag} already exists, so create a new release candidate:"
echo "1. Create or checkout maint-<version>."
echo "2. Execute the script again with bumped RC number."
echo "Commands:"
echo " git checkout maint-${version}"
echo " dev/release/01-prepare.sh ${version} ${next_version} ${next_rc_number}"
exit 1
fi

############################## Pre-Tag Commits ##############################

echo "Updating changelog for $version"
# Update changelog
cz ch --incremental --unreleased-version "ADBC Libraries ${version} RC ${rc_number}"
git add ${SOURCE_DIR}/../../CHANGELOG.md
git commit -m "chore: update CHANGELOG.md for $version"

echo "Prepare release ${version} on tag ${release_candidate_tag}"

update_versions "${version}" "${next_version}" "release"
git commit -m "chore: update versions for ${version}"

######################### Tag the Release Candidate #########################

git tag -a "${release_candidate_tag}" -m "ADBC Libraries ${version} RC ${rc_number}"

echo "Created release candidate tag: ${release_candidate_tag}"
echo "Push this tag before continuing!"
108 changes: 108 additions & 0 deletions dev/release/02-source.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
#!/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

: ${SOURCE_UPLOAD:="0"}

main() {
local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )"

if type shasum >/dev/null 2>&1; then
local -r sha256_generate="shasum -a 256"
local -r sha512_generate="shasum -a 512"
else
local -r sha256_generate="sha256sum"
local -r sha512_generate="sha512sum"
fi

if [ "$#" -ne 2 ]; then
echo "Usage: $0 <version> <rc-num>"
exit 1
fi
local -r version="$1"
local -r rc_number="$2"
local -r tag="apache-arrow-adbc-${version}-rc${rc_number}"

echo "Preparing source for tag ${tag}"
local -r release_hash=$(cd "${source_top_dir}" && git rev-list --max-count=1 ${tag} --)

if [[ -z "${release_hash}" ]]; then
echo "Cannot continue: unknown Git tag: ${tag}"
exit 1
fi

echo "Using commit ${release_hash}"

local -r tarball="${tag}.tar.gz"

pushd "${source_top_dir}"

rm -rf "${tag}/"
git archive "${release_hash}" --prefix "${tag}/" | tar xf -

# Resolve all hard and symbolic links
rm -rf "${tag}.tmp/"
mv "${tag}/" "${tag}.tmp/"
cp -R -L "${tag}.tmp" "${tag}"
rm -rf "${tag}.tmp/"

# Create new tarball
tar czf "${tarball}" "${tag}/"
rm -rf "${tag}/"

# check licenses
"${source_dir}/run-rat.sh" "${tarball}"

# Sign the archive
gpg --armor --output "${tarball}.asc" --detach-sig "${tarball}"
${sha256_generate} "${tarball}" | tee "${tarball}.sha256"
${sha512_generate} "${tarball}" | tee "${tarball}.sha512"

# Upload
if [[ "${SOURCE_UPLOAD}" -gt 0 ]]; then
echo "Uploading to dist.apache.org"

local -r tagrc="${tag}"

# check out the arrow RC folder
svn co --depth=empty https://dist.apache.org/repos/dist/dev/arrow tmp

# add the release candidate for the tag
mkdir -p "tmp/${tagrc}"

# copy the rc tarball into the tmp dir
cp ${tarball}* "tmp/${tagrc}"

# commit to svn
svn add "tmp/${tagrc}"
svn ci -m "Apache Arrow ADBC ${version} RC${rc}" "tmp/${tagrc}"

# clean up
rm -rf tmp

echo "Uploaded at https://dist.apache.org/repos/dist/dev/arrow/${tagrc}"
fi

echo "Commit SHA1: ${release_hash}"

popd
}

main "$@"
Loading

0 comments on commit 9f3c283

Please sign in to comment.