From 1deb0985de3f0ee44a6d6f3720eb75f2d71ae34e Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 15:52:03 -0500 Subject: [PATCH 01/13] fix(release): fix svn add command --- dev/release/release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/release/release.sh b/dev/release/release.sh index ec20a489..9bd04cca 100755 --- a/dev/release/release.sh +++ b/dev/release/release.sh @@ -57,7 +57,7 @@ gh release download "${rc_tag}" \ echo "Uploading to release/" pushd "${dist_base_dir}" -svn add . +svn add "${release_id}" svn ci -m "Apache Arrow Go ${version}" popd rm -rf "${dist_base_dir}" From 3419d0ac2b67f0c86b48a140f2ef976c5987183c Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 15:52:42 -0500 Subject: [PATCH 02/13] fix(release): add script to generate arrow-site release notes --- dev/release/post-website.sh | 139 ++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100755 dev/release/post-website.sh diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh new file mode 100755 index 00000000..ff08d7a4 --- /dev/null +++ b/dev/release/post-website.sh @@ -0,0 +1,139 @@ +#!/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 -e +set -u + +SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ARROW_DIR="${SOURCE_DIR}/../../" +: ${ARROW_SITE_DIR:="${ARROW_DIR}/../arrow-site"} + +if [ "$#" -ne 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +previous_version=$1 +version=$2 + +branch_name=release-note-arrow-go-${version} +release_dir="${ARROW_SITE_DIR}/_posts" +announce_file="${release_dir}/$(date +%Y-%m-%d)-arrow-go-${version}.md" + +pushd "${ARROW_SITE_DIR}" +DEFAULT_BRANCH="$(git rev-parse --abbrev-ref origin/HEAD | sed s@origin/@@)" +git fetch --all --prune --tags --force -j$(nproc) +git checkout ${DEFAULT_BRANCH} +git branch -D ${branch_name} || : +git checkout -b ${branch_name} +popd + +pushd "${ARROW_DIR}" + +previous_major_version="$(echo v${previous_version} | grep -o '^[0-9]*')" +major_version="$(echo v${version} | grep -o '^[0-9]*')" +if [ ${previous_major_version} -eq ${major_version} ]; then + release_type=patch +else + release_type=major +fi + +export TZ=UTC +release_date=$(LC_TIME=C date "+%-d %B %Y") +release_date_iso8601=$(LC_TIME=C date "+%Y-%m-%d") +previous_tag_date=$(git log -n 1 --pretty=%aI v${previous_version}) +rough_previous_release_date=$(date --date "${previous_tag_date}" +%s) +rough_release_date=$(date +%s) +rough_n_development_months=$(( + (${rough_release_date} - ${rough_previous_release_date}) / (60 * 60 * 24 * 30) +)) + +git_tag=v${version} +git_range=v${previous_version}..v${version} + +contributors_command_line="git shortlog -sn ${git_range}" +contributors=$(${contributors_command_line} | grep -v dependabot) + +n_commits=$(git log --pretty=oneline ${git_range} | grep -i -v "chore: Bump" | wc -l) +n_contributors=$(${contributors_command_line} | grep -v dependabot | wc -l) + +git_tag_hash=$(git log -n 1 --pretty=%H ${git_tag}) +git_changelog="$(gh release view --json body --jq .body | grep -v '@dependabot')" +popd + +pushd "${ARROW_SITE_DIR}" + +cat <> "${announce_file}" +--- +layout: post +title: "Apache Arrow Go ${version} Release" +date: "${release_date_iso8601} 00:00:00" +author: pmc +categories: [release] +--- + + +The Apache Arrow team is pleased to announce the v${version} release ofApache Arrow Go. +This ${release_type} release covers ${n_commits} commits from ${n_contributors} distinct contributors. + +## Contributors +\`\`\`console +$ ${contributors_command_line} +ANNOUNCE + +echo "${contributors}" >> "${announce_file}" + +cat <> "${announce_file}" +\`\`\` + +## Changelog + +${git_changelog} +ANNOUNCE + +git add "${announce_file}" +git commit -m "[Release] Add release notes for Arrow Go ${version}" +git push -u origin ${branch_name} + +github_url=$(git remote get-url origin | \ + sed \ + -e 's,^git@github.com:,https://github.com/,' \ + -e 's,\.git$,,') + +echo "Success!" +echo "Create a pull request:" +echo " ${github_url}/pull/new/${branch_name}" +popd From 742d0cca3b47a0797fbe8c263662d574297881bd Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 16:06:06 -0500 Subject: [PATCH 03/13] run shfmt --- dev/release/post-website.sh | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index ff08d7a4..7a93c1da 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -60,9 +60,8 @@ release_date_iso8601=$(LC_TIME=C date "+%Y-%m-%d") previous_tag_date=$(git log -n 1 --pretty=%aI v${previous_version}) rough_previous_release_date=$(date --date "${previous_tag_date}" +%s) rough_release_date=$(date +%s) -rough_n_development_months=$(( - (${rough_release_date} - ${rough_previous_release_date}) / (60 * 60 * 24 * 30) -)) +rough_n_development_months=$(((\ + ${rough_release_date} - ${rough_previous_release_date}) / (60 * 60 * 24 * 30))) git_tag=v${version} git_range=v${previous_version}..v${version} @@ -79,7 +78,7 @@ popd pushd "${ARROW_SITE_DIR}" -cat <> "${announce_file}" +cat <>"${announce_file}" --- layout: post title: "Apache Arrow Go ${version} Release" @@ -114,9 +113,9 @@ This ${release_type} release covers ${n_commits} commits from ${n_contributors} $ ${contributors_command_line} ANNOUNCE -echo "${contributors}" >> "${announce_file}" +echo "${contributors}" >>"${announce_file}" -cat <> "${announce_file}" +cat <>"${announce_file}" \`\`\` ## Changelog @@ -128,10 +127,10 @@ git add "${announce_file}" git commit -m "[Release] Add release notes for Arrow Go ${version}" git push -u origin ${branch_name} -github_url=$(git remote get-url origin | \ - sed \ - -e 's,^git@github.com:,https://github.com/,' \ - -e 's,\.git$,,') +github_url=$(git remote get-url origin | + sed \ + -e 's,^git@github.com:,https://github.com/,' \ + -e 's,\.git$,,') echo "Success!" echo "Create a pull request:" From a8fdd84a7595040ff1154e1ebfa26fb6ec2271ab Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:33:07 -0500 Subject: [PATCH 04/13] Update dev/release/post-website.sh Co-authored-by: Sutou Kouhei --- dev/release/post-website.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index 7a93c1da..48481331 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -41,7 +41,7 @@ DEFAULT_BRANCH="$(git rev-parse --abbrev-ref origin/HEAD | sed s@origin/@@)" git fetch --all --prune --tags --force -j$(nproc) git checkout ${DEFAULT_BRANCH} git branch -D ${branch_name} || : -git checkout -b ${branch_name} +git switch -c ${branch_name} popd pushd "${ARROW_DIR}" From 15bdcc43e58cd014a90404c612d2401f58d07002 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:33:18 -0500 Subject: [PATCH 05/13] Update dev/release/post-website.sh Co-authored-by: Sutou Kouhei --- dev/release/post-website.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index 48481331..4deec78a 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -39,7 +39,7 @@ announce_file="${release_dir}/$(date +%Y-%m-%d)-arrow-go-${version}.md" pushd "${ARROW_SITE_DIR}" DEFAULT_BRANCH="$(git rev-parse --abbrev-ref origin/HEAD | sed s@origin/@@)" git fetch --all --prune --tags --force -j$(nproc) -git checkout ${DEFAULT_BRANCH} +git switch ${DEFAULT_BRANCH} git branch -D ${branch_name} || : git switch -c ${branch_name} popd From 613548b7da9981ca33756215092547c53964b9f7 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:35:26 -0500 Subject: [PATCH 06/13] Update dev/release/post-website.sh Co-authored-by: Sutou Kouhei --- dev/release/post-website.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index 4deec78a..b48f8307 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -46,8 +46,8 @@ popd pushd "${ARROW_DIR}" -previous_major_version="$(echo v${previous_version} | grep -o '^[0-9]*')" -major_version="$(echo v${version} | grep -o '^[0-9]*')" +previous_major_version="$(echo ${previous_version} | grep -o '^[0-9]*')" +major_version="$(echo ${version} | grep -o '^[0-9]*')" if [ ${previous_major_version} -eq ${major_version} ]; then release_type=patch else From 919928ed0ce9bb4a65682d110b8c15c136e7d5a9 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:35:40 -0500 Subject: [PATCH 07/13] Update dev/release/post-website.sh Co-authored-by: Sutou Kouhei --- dev/release/post-website.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index b48f8307..c78f898d 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -105,7 +105,7 @@ limitations under the License. {% endcomment %} --> -The Apache Arrow team is pleased to announce the v${version} release ofApache Arrow Go. +The Apache Arrow team is pleased to announce the v${version} release of Apache Arrow Go. This ${release_type} release covers ${n_commits} commits from ${n_contributors} distinct contributors. ## Contributors From e7d16ff285ad8da5bd847a79577cc048445ed424 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:35:59 -0500 Subject: [PATCH 08/13] Update dev/release/post-website.sh Co-authored-by: Sutou Kouhei --- dev/release/post-website.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index c78f898d..75781205 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -73,7 +73,7 @@ n_commits=$(git log --pretty=oneline ${git_range} | grep -i -v "chore: Bump" | w n_contributors=$(${contributors_command_line} | grep -v dependabot | wc -l) git_tag_hash=$(git log -n 1 --pretty=%H ${git_tag}) -git_changelog="$(gh release view --json body --jq .body | grep -v '@dependabot')" +git_changelog="$(gh release view --json body --jq .body | grep -v '@dependabot' | sed -e 's/^#/##/g')" popd pushd "${ARROW_SITE_DIR}" From 9bf3eb9ce917bb232c08ebdb2b9c08d05035f848 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:54:48 -0500 Subject: [PATCH 09/13] lint and update from comments --- dev/release/post-website.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index 75781205..7a69cbe6 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -37,6 +37,12 @@ release_dir="${ARROW_SITE_DIR}/_posts" announce_file="${release_dir}/$(date +%Y-%m-%d)-arrow-go-${version}.md" pushd "${ARROW_SITE_DIR}" +git_origin_url="$(git remote get-url origin)" +if [ "${git_origin_url}" = "git@github.com:apache/arrow-site.git" ]; then + echo "This script should be run with a fork of apache/arrow-site." + exit 1 +fi + DEFAULT_BRANCH="$(git rev-parse --abbrev-ref origin/HEAD | sed s@origin/@@)" git fetch --all --prune --tags --force -j$(nproc) git switch ${DEFAULT_BRANCH} @@ -46,10 +52,16 @@ popd pushd "${ARROW_DIR}" -previous_major_version="$(echo ${previous_version} | grep -o '^[0-9]*')" -major_version="$(echo ${version} | grep -o '^[0-9]*')" +previous_major_version="$(echo ${previous_version} | cut -d. -f1)" +previous_minor_version="$(echo ${previous_version} | cut -d. -f2)" +major_version="$(echo ${version} | cut -d. -f1)" +minor_version="$(echo ${version} | cut -d. -f2)" if [ ${previous_major_version} -eq ${major_version} ]; then - release_type=patch + if [ ${previous_minor_version} -eq ${minor_version} ]; then + release_type=patch + else + release_type=minor + fi else release_type=major fi From 56f4ccee40860a5a609435f057944ae65039dc4c Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 19:55:32 -0500 Subject: [PATCH 10/13] shfmt --- dev/release/post-website.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index 7a69cbe6..bc9d12d5 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -61,7 +61,7 @@ if [ ${previous_major_version} -eq ${major_version} ]; then release_type=patch else release_type=minor - fi + fi else release_type=major fi From 32cf8dac4c7c7910025cdae4e3dc15a4c0ef04dd Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 20:02:43 -0500 Subject: [PATCH 11/13] adopting stuff from shellcheck --- dev/release/post-website.sh | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index bc9d12d5..db4353b9 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -44,10 +44,10 @@ if [ "${git_origin_url}" = "git@github.com:apache/arrow-site.git" ]; then fi DEFAULT_BRANCH="$(git rev-parse --abbrev-ref origin/HEAD | sed s@origin/@@)" -git fetch --all --prune --tags --force -j$(nproc) -git switch ${DEFAULT_BRANCH} -git branch -D ${branch_name} || : -git switch -c ${branch_name} +git fetch --all --prune --tags --force "-j$(nproc)" +git switch "${DEFAULT_BRANCH}" +git branch -D "${branch_name}" || : +git switch -c "${branch_name}" popd pushd "${ARROW_DIR}" @@ -56,24 +56,18 @@ previous_major_version="$(echo ${previous_version} | cut -d. -f1)" previous_minor_version="$(echo ${previous_version} | cut -d. -f2)" major_version="$(echo ${version} | cut -d. -f1)" minor_version="$(echo ${version} | cut -d. -f2)" -if [ ${previous_major_version} -eq ${major_version} ]; then - if [ ${previous_minor_version} -eq ${minor_version} ]; then - release_type=patch +if [ "${previous_major_version}" -eq "${major_version}" ]; then + if [ "${previous_minor_version}" -eq "${minor_version}" ]; then + release_type="patch" else - release_type=minor + release_type="minor" fi else - release_type=major + release_type="major" fi export TZ=UTC -release_date=$(LC_TIME=C date "+%-d %B %Y") release_date_iso8601=$(LC_TIME=C date "+%Y-%m-%d") -previous_tag_date=$(git log -n 1 --pretty=%aI v${previous_version}) -rough_previous_release_date=$(date --date "${previous_tag_date}" +%s) -rough_release_date=$(date +%s) -rough_n_development_months=$(((\ - ${rough_release_date} - ${rough_previous_release_date}) / (60 * 60 * 24 * 30))) git_tag=v${version} git_range=v${previous_version}..v${version} @@ -81,10 +75,9 @@ git_range=v${previous_version}..v${version} contributors_command_line="git shortlog -sn ${git_range}" contributors=$(${contributors_command_line} | grep -v dependabot) -n_commits=$(git log --pretty=oneline ${git_range} | grep -i -v "chore: Bump" | wc -l) -n_contributors=$(${contributors_command_line} | grep -v dependabot | wc -l) +n_commits=$(git log --pretty=oneline ${git_range} | grep -c -i -v "chore: Bump") +n_contributors=$(${contributors_command_line} | grep -c -v dependabot) -git_tag_hash=$(git log -n 1 --pretty=%H ${git_tag}) git_changelog="$(gh release view --json body --jq .body | grep -v '@dependabot' | sed -e 's/^#/##/g')" popd @@ -137,7 +130,7 @@ ANNOUNCE git add "${announce_file}" git commit -m "[Release] Add release notes for Arrow Go ${version}" -git push -u origin ${branch_name} +git push -u origin "${branch_name}" github_url=$(git remote get-url origin | sed \ From fc5d23a60d1349ea6f9b2bcb8a601e9e7470a56a Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 20:04:33 -0500 Subject: [PATCH 12/13] one more fix --- dev/release/post-website.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index db4353b9..c5d0f717 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -69,7 +69,6 @@ fi export TZ=UTC release_date_iso8601=$(LC_TIME=C date "+%Y-%m-%d") -git_tag=v${version} git_range=v${previous_version}..v${version} contributors_command_line="git shortlog -sn ${git_range}" From f1d1c625ddfd3b0847306d594ddcb17059003d9c Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Mon, 13 Jan 2025 20:10:04 -0500 Subject: [PATCH 13/13] finally linting passing --- dev/release/post-website.sh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/dev/release/post-website.sh b/dev/release/post-website.sh index c5d0f717..7a51af98 100755 --- a/dev/release/post-website.sh +++ b/dev/release/post-website.sh @@ -22,7 +22,7 @@ set -u SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ARROW_DIR="${SOURCE_DIR}/../../" -: ${ARROW_SITE_DIR:="${ARROW_DIR}/../arrow-site"} +: "${ARROW_SITE_DIR:="${ARROW_DIR}/../arrow-site"}" if [ "$#" -ne 2 ]; then echo "Usage: $0 " @@ -32,7 +32,7 @@ fi previous_version=$1 version=$2 -branch_name=release-note-arrow-go-${version} +branch_name="release-note-arrow-go-${version}" release_dir="${ARROW_SITE_DIR}/_posts" announce_file="${release_dir}/$(date +%Y-%m-%d)-arrow-go-${version}.md" @@ -52,10 +52,10 @@ popd pushd "${ARROW_DIR}" -previous_major_version="$(echo ${previous_version} | cut -d. -f1)" -previous_minor_version="$(echo ${previous_version} | cut -d. -f2)" -major_version="$(echo ${version} | cut -d. -f1)" -minor_version="$(echo ${version} | cut -d. -f2)" +previous_major_version="$(echo "${previous_version}" | cut -d. -f1)" +previous_minor_version="$(echo "${previous_version}" | cut -d. -f2)" +major_version="$(echo "${version}" | cut -d. -f1)" +minor_version="$(echo "${version}" | cut -d. -f2)" if [ "${previous_major_version}" -eq "${major_version}" ]; then if [ "${previous_minor_version}" -eq "${minor_version}" ]; then release_type="patch" @@ -74,7 +74,7 @@ git_range=v${previous_version}..v${version} contributors_command_line="git shortlog -sn ${git_range}" contributors=$(${contributors_command_line} | grep -v dependabot) -n_commits=$(git log --pretty=oneline ${git_range} | grep -c -i -v "chore: Bump") +n_commits=$(git log --pretty=oneline "${git_range}" | grep -c -i -v "chore: Bump") n_contributors=$(${contributors_command_line} | grep -c -v dependabot) git_changelog="$(gh release view --json body --jq .body | grep -v '@dependabot' | sed -e 's/^#/##/g')" @@ -82,7 +82,8 @@ popd pushd "${ARROW_SITE_DIR}" -cat <>"${announce_file}" +{ + cat <>"${announce_file}" + echo "${contributors}" -cat <>"${announce_file}" + cat <>"${announce_file}" git add "${announce_file}" git commit -m "[Release] Add release notes for Arrow Go ${version}"