Skip to content

Commit

Permalink
chore(dev/release): decouple version numbers
Browse files Browse the repository at this point in the history
  • Loading branch information
lidavidm committed Apr 25, 2024
1 parent 5773d93 commit 055ce8f
Show file tree
Hide file tree
Showing 15 changed files with 293 additions and 238 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,11 @@ jobs:
- name: Extract source archive
run: |
tar xf apache-arrow-adbc-${{ steps.info.outputs.VERSION }}.tar.gz
source ./apache-arrow-adbc-${{ steps.info.outputs.VERSION }}/dev/release/versions.env
mv apache-arrow-adbc-${{ steps.info.outputs.VERSION }} adbc
mv apache-arrow-adbc-${{ steps.info.outputs.VERSION }}.tar.gz adbc/ci/linux-packages/
mv apache-arrow-adbc-${{ steps.info.outputs.VERSION }}.tar.gz adbc/ci/linux-packages/apache-arrow-adbc-${VERSION_NATIVE}.tar.gz
- name: Set up Ruby
uses: ruby/setup-ruby@v1
Expand Down
89 changes: 45 additions & 44 deletions dev/release/01-prepare.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,60 +20,61 @@
set -ue

SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$SOURCE_DIR/utils-common.sh"
source "$SOURCE_DIR/utils-prepare.sh"

if [ "$#" -ne 5 ]; then
echo "Usage: $0 <arrow-dir> <prev_veresion> <version> <next_version> <rc-num>"
echo "Usage: $0 ../arrow 0.1.0 0.2.0 0.3.0 0"
exit 1
fi
main() {
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <arrow-dir> <rc_num>"
echo "Usage: $0 ../arrow 0"
exit 1
fi

. $SOURCE_DIR/utils-prepare.sh
local -r arrow_dir="$1"
local -r rc_number="$2"
local -r release_candidate_tag="apache-arrow-adbc-${RELEASE}-rc${rc_number}"

arrow_dir=$1
prev_version=$2
version=$3
next_version=$4
next_version_snapshot="${next_version}-SNAPSHOT"
rc_number=$5
export ARROW_SOURCE="$(cd "${arrow_dir}" && pwd)"

export ARROW_SOURCE="$(cd "${arrow_dir}" && pwd)"
if [[ $(git tag -l "${release_candidate_tag}") ]]; then
local -r 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 ${arrow_dir} ${next_rc_number}"
exit 1
fi

release_candidate_tag="apache-arrow-adbc-${version}-rc${rc_number}"
############################## Pre-Tag Commits ##############################

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
header "Updating changelog for ${RELEASE}"
# Update changelog
# XXX: commitizen doesn't respect --tag-format with --incremental, so mimic
# it by hand.
(
echo ;
# Strip trailing blank line
printf '%s\n' "$(cz ch --dry-run --unreleased-version "ADBC Libraries ${RELEASE}" --start-rev apache-arrow-adbc-${PREVIOUS_RELEASE})"
) >> ${SOURCE_DIR}/../../CHANGELOG.md
git add ${SOURCE_DIR}/../../CHANGELOG.md
git commit -m "chore: update CHANGELOG.md for ${RELEASE}"

############################## Pre-Tag Commits ##############################
header "Prepare release ${RELEASE} on tag ${release_candidate_tag}"

echo "Updating changelog for $version"
# Update changelog
# XXX: commitizen doesn't respect --tag-format with --incremental, so mimic
# it by hand.
(
echo ;
# Strip trailing blank line
printf '%s\n' "$(cz ch --dry-run --unreleased-version "ADBC Libraries ${version}" --start-rev apache-arrow-adbc-${prev_version})"
) >> ${SOURCE_DIR}/../../CHANGELOG.md
git add ${SOURCE_DIR}/../../CHANGELOG.md
git commit -m "chore: update CHANGELOG.md for $version"
update_versions "release"
# --allow-empty required for RCs after the first
git commit -m "chore: update versions for ${RELEASE}" --allow-empty

echo "Prepare release ${version} on tag ${release_candidate_tag}"
######################### Tag the Release Candidate #########################

update_versions "${version}" "${next_version}" "release"
# --allow-empty required for RCs after the first
git commit -m "chore: update versions for ${version}" --allow-empty
header "Tag the release candidate ${release_candidate_tag}"

######################### Tag the Release Candidate #########################
git tag -a "${release_candidate_tag}" -m "ADBC Libraries ${RELEASE} RC ${rc_number}"

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!"
}

echo "Created release candidate tag: ${release_candidate_tag}"
echo "Push this tag before continuing!"
main "$@"
37 changes: 11 additions & 26 deletions dev/release/02-sign.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,21 @@

set -eu

main() {
local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )"
pushd "${source_top_dir}"
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SOURCE_DIR}/utils-common.sh"
source "${SOURCE_DIR}/utils-prepare.sh"

if [ "$#" -ne 3 ]; then
echo "Usage: $0 <prev-version> <version> <rc-num>"
main() {
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <rc-num>"
echo "Usage: $0 0"
exit 1
fi

local -r prev_version="$1"
local -r version="$2"
local -r rc_number="$3"
local -r tag="apache-arrow-adbc-${version}-rc${rc_number}"
local -r tarball="apache-arrow-adbc-${version}"
pushd "${SOURCE_TOP_DIR}"

: ${REPOSITORY:="apache/arrow-adbc"}

if [[ ! -f "${source_dir}/.env" ]]; then
echo "You must create ${source_dir}/.env"
echo "You can use ${source_dir}/.env.example as a template"
fi

source "${source_dir}/.env"
local -r rc_number="$1"
local -r tag="apache-arrow-adbc-${RELEASE}-rc${rc_number}"

header "Looking for GitHub Actions workflow on ${REPOSITORY}:${tag}"
local run_id=""
Expand Down Expand Up @@ -72,7 +63,7 @@ main() {
header "Adding release notes"
# XXX: commitizen likes to include the entire history even if we
# give it a tag, so we have to give it both tags explicitly
local -r release_notes=$(cz ch --dry-run --unreleased-version "ADBC Libraries ${version}" --start-rev apache-arrow-adbc-${prev_version})
local -r release_notes=$(cz ch --dry-run --unreleased-version "ADBC Libraries ${RELEASE}" --start-rev apache-arrow-adbc-${PREVIOUS_RELEASE})
echo "${release_notes}"
gh release edit \
"${tag}" \
Expand All @@ -97,12 +88,6 @@ main() {
popd
}

header() {
echo "============================================================"
echo "${1}"
echo "============================================================"
}

sign_asset() {
local -r asset="$1"
local -r sigfile="${asset}.asc"
Expand Down
38 changes: 14 additions & 24 deletions dev/release/03-source.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,19 @@

set -eu

main() {
local -r source_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
local -r source_top_dir="$( cd "${source_dir}/../../" && pwd )"
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SOURCE_DIR}/utils-common.sh"
source "${SOURCE_DIR}/utils-prepare.sh"

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

: ${REPOSITORY:="apache/arrow-adbc"}

if [[ ! -f "${source_dir}/.env" ]]; then
echo "You must create ${source_dir}/.env"
echo "You can use ${source_dir}/.env.example as a template"
fi

source "${source_dir}/.env"
local -r rc_number="$1"
local -r tag="apache-arrow-adbc-${RELEASE}-rc${rc_number}"
local -r tarball="apache-arrow-adbc-${RELEASE}.tar.gz"

header "Downloading assets from release"
local -r download_dir="packages/${tag}"
Expand All @@ -63,18 +55,16 @@ main() {

# commit to svn
svn add "tmp/${tag}"
svn ci -m "Apache Arrow ADBC ${version} RC${rc_number}" "tmp/${tag}"
if [[ "${DRY_RUN}" = 0 ]]; then
svn ci -m "Apache Arrow ADBC ${version} RC${rc_number}" "tmp/${tag}"
else
echo "Dry run: not committing to dist.apache.org"
fi

# clean up
rm -rf tmp

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

header() {
echo "============================================================"
echo "${1}"
echo "============================================================"
}

main "$@"
22 changes: 10 additions & 12 deletions dev/release/04-java-upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,20 @@ set -e
set -u
set -o pipefail

main() {
local -r source_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
local -r source_top_dir="$(cd "${source_dir}/../../" && pwd)"
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SOURCE_DIR}/utils-common.sh"
source "${SOURCE_DIR}/utils-prepare.sh"

if [ $# -ne 3 ]; then
echo "Usage: $0 <arrow-dir> <version> <rc-number>"
echo "Usage: $0 ../arrow 1.0.0 0"
main() {
if [ $# -ne 2 ]; then
echo "Usage: $0 <arrow-dir> <rc-number>"
echo "Usage: $0 ../arrow 0"
exit
fi

local -r arrow_dir="$(cd "$1" && pwd)"
local -r version="$2"
local -r rc_number="$3"
local -r tag="apache-arrow-adbc-${version}-rc${rc_number}"

: ${REPOSITORY:="apache/arrow-adbc"}
local -r rc_number="$2"
local -r tag="apache-arrow-adbc-${RELEASE}-rc${rc_number}"

export ARROW_ARTIFACTS_DIR="$(pwd)/packages/${tag}/java"
rm -rf "${ARROW_ARTIFACTS_DIR}"
Expand All @@ -51,7 +49,7 @@ main() {
"${tag}"

export UPLOAD_FORCE_SIGN=0
"${arrow_dir}/dev/release/06-java-upload.sh" "${version}" "${rc_number}"
"${arrow_dir}/dev/release/06-java-upload.sh" "${RELEASE}" "${rc_number}"
}

main "$@"
32 changes: 16 additions & 16 deletions dev/release/06-binary-verify.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,27 @@

set -euo pipefail

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

local -r version="$1"
local -r rc_number="$2"
local -r tag="apache-arrow-adbc-${version}-rc${rc_number}"
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SOURCE_DIR}/utils-common.sh"
source "${SOURCE_DIR}/utils-prepare.sh"

: ${WORKFLOW_REF:="main"}
: ${REPOSITORY:="apache/arrow-adbc"}
main() {
if [ $# -ne 1 ]; then
echo "Usage: $0 <rc-number>"
echo "Usage: $0 0"
exit
fi

export SOURCE_DIR="${source_dir}"
source "${source_top_dir}/dev/release/utils-prepare.sh"
local -r rc_number="$1"
local -r tag="apache-arrow-adbc-${RELEASE}-rc${rc_number}"

echo "Starting GitHub Actions workflow on ${REPOSITORY} for ${version} RC${rc_number}"
echo "Starting GitHub Actions workflow on ${REPOSITORY} for ${RELEASE} RC${rc_number}"

gh workflow run \
--repo "${REPOSITORY}" \
--ref "${WORKFLOW_REF}" \
verify.yml \
--raw-field version="${version}" \
--raw-field version="${RELEASE}" \
--raw-field rc="${rc_number}"

local run_id=""
Expand All @@ -56,7 +56,7 @@ main() {
echo "Started GitHub Actions workflow with ID: ${run_id}"
echo "You can wait for completion via: gh run watch --repo ${REPOSITORY} ${run_id}"

set_resolved_issues "${version}"
set_resolved_issues "${RELEASE}"

echo "The following draft email has been created to send to the"
echo "dev@arrow.apache.org mailing list"
Expand All @@ -67,7 +67,7 @@ main() {

cat <<MAIL
To: dev@arrow.apache.org
Subject: [VOTE] Release Apache Arrow ADBC ${version} - RC${rc_number}
Subject: [VOTE] Release Apache Arrow ADBC ${RELEASE} - RC${rc_number}
Hello,
Expand All @@ -91,7 +91,7 @@ The vote will be open for at least 72 hours.
Note: to verify APT/YUM packages on macOS/AArch64, you must \`export DOCKER_DEFAULT_PLATFORM=linux/amd64\`. (Or skip this step by \`export TEST_APT=0 TEST_YUM=0\`.)
[1]: https://github.com/apache/arrow-adbc/issues?q=is%3Aissue+milestone%3A%22ADBC+Libraries+${version}%22+is%3Aclosed
[1]: https://github.com/apache/arrow-adbc/issues?q=is%3Aissue+milestone%3A%22ADBC+Libraries+${RELEASE}%22+is%3Aclosed
[2]: https://github.com/apache/arrow-adbc/commit/${commit}
[3]: https://dist.apache.org/repos/dist/dev/arrow/${tag}/
[4]: https://apache.jfrog.io/artifactory/arrow/almalinux-rc/
Expand Down
23 changes: 13 additions & 10 deletions dev/release/post-01-upload.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,33 @@

set -eu

SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SOURCE_DIR}/utils-common.sh"
source "${SOURCE_DIR}/utils-prepare.sh"

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

rc_id="apache-arrow-adbc-${version}-rc${rc_number}"
release_id="apache-arrow-adbc-${version}"
rc_id="apache-arrow-adbc-${RELEASE}-rc${rc_number}"
release_id="apache-arrow-adbc-${RELEASE}"
echo "Copying dev/ to release/"
svn \
cp \
-m "Apache Arrow ADBC ${version}" \
-m "Apache Arrow ADBC ${RELEASE}" \
https://dist.apache.org/repos/dist/dev/arrow/${rc_id} \
https://dist.apache.org/repos/dist/release/arrow/${release_id}

echo "Create final tag"
git tag -a "apache-arrow-adbc-${version}" -m "ADBC Libraries ${version}" "${tag}^{}"
git tag -a "apache-arrow-adbc-${RELEASE}" -m "ADBC Libraries ${RELEASE}" "${tag}^{}"

echo "Success! The release is available here:"
echo " https://dist.apache.org/repos/dist/release/arrow/${release_id}"
echo "Please push the tag apache-arrow-adbc-${version}!"
echo "Please push the tag apache-arrow-adbc-${RELEASE}!"
}

main "$@"
Loading

0 comments on commit 055ce8f

Please sign in to comment.