#!/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-${version} release_dir="${ARROW_SITE_DIR}/_release" announce_file="${release_dir}/${version}.md" versions_yml="${ARROW_SITE_DIR}/_data/versions.yml" pushd "${ARROW_SITE_DIR}" git checkout master git checkout -b ${branch_name} popd pushd "${ARROW_DIR}" release_date=$(LANG=C date "+%-d %B %Y") previous_tag_date=$(git log -n 1 --pretty=%aI apache-arrow-${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=apache-arrow-${version} git_range=apache-arrow-${previous_version}..${git_tag} committers_command_line="git shortlog -csn ${git_range}" contributors_command_line="git shortlog -sn ${git_range}" committers=$(${committers_command_line}) contributors=$(${contributors_command_line}) n_commits=$(git log --pretty=oneline ${git_range} | wc -l) n_contributors=$(${contributors_command_line} | wc -l) git_tag_hash=$(git log -n 1 --pretty=%H ${git_tag}) popd pushd "${ARROW_SITE_DIR}" # Add announce for the current version cat < "${announce_file}" --- layout: default title: Apache Arrow ${version} Release permalink: /release/${version}.html --- # Apache Arrow ${version} (${release_date}) This is a major release covering more than ${rough_n_development_months} months of development. ## Download * [**Source Artifacts**][1] * **Binary Artifacts** * [For CentOS][2] * [For Debian][3] * [For Python][4] * [For Ubuntu][5] * [Git tag][6] ## Contributors This release includes ${n_commits} commits from ${n_contributors} distinct contributors. \`\`\`console $ ${contributors_command_line} ANNOUNCE echo "${contributors}" >> "${announce_file}" cat <> "${announce_file}" \`\`\` ## Patch Committers The following Apache committers merged contributed patches to the repository. \`\`\`console $ ${committers_command_line} ANNOUNCE echo "${committers}" >> "${announce_file}" cat <> "${announce_file}" \`\`\` ## Changelog ANNOUNCE archery release changelog generate ${version} | \ sed -e 's/^#/##/g' >> "${announce_file}" cat <> "${announce_file}" [1]: https://www.apache.org/dyn/closer.lua/arrow/arrow-${version}/ [2]: https://apache.jfrog.io/artifactory/arrow/centos/ [3]: https://apache.jfrog.io/artifactory/arrow/debian/ [4]: https://apache.jfrog.io/artifactory/arrow/python/${version}/ [5]: https://apache.jfrog.io/artifactory/arrow/ubuntu/ [6]: https://github.com/apache/arrow/releases/tag/apache-arrow-${version} ANNOUNCE git add "${announce_file}" # Update index pushd "${release_dir}" index_file=index.md rm -f ${index_file} announce_files="$(ls | sort --version-sort --reverse)" cat < ${index_file} --- layout: default title: Releases permalink: /release/index.html --- # Apache Arrow Releases Navigate to the release page for downloads and the changelog. INDEX i=0 for md_file in ${announce_files}; do i=$((i + 1)) title=$(grep '^# Apache Arrow' ${md_file} | sed -e 's/^# Apache Arrow //') echo "* [${title}][${i}]" >> ${index_file} done echo >> ${index_file} i=0 for md_file in ${announce_files}; do i=$((i + 1)) html_file=$(echo ${md_file} | sed -e 's/md$/html/') echo "[${i}]: {{ site.baseurl }}/release/${html_file}" >> ${index_file} done git add ${index_file} popd # Update versions.yml pinned_version=$(echo ${version} | sed -e 's/\.[^.]*$/.*/') apache_download_url=https://downloads.apache.org cat < "${versions_yml}" # 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. # # Database of the current version # current: number: '${version}' pinned_number: '${pinned_version}' date: '${release_date}' git-tag: '${git_tag_hash}' github-tag-link: 'https://github.com/apache/arrow/releases/tag/${git_tag}' release-notes: 'https://arrow.apache.org/release/${version}.html' mirrors: 'https://www.apache.org/dyn/closer.lua/arrow/arrow-${version}/' tarball-name: 'apache-arrow-${version}.tar.gz' tarball-url: 'https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/arrow-${version}/apache-arrow-${version}.tar.gz' java-artifacts: 'http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.arrow%22%20AND%20v%3A%22${version}%22' asc: '${apache_download_url}/arrow/arrow-${version}/apache-arrow-${version}.tar.gz.asc' sha256: '${apache_download_url}/arrow/arrow-${version}/apache-arrow-${version}.tar.gz.sha256' sha512: '${apache_download_url}/arrow/arrow-${version}/apache-arrow-${version}.tar.gz.sha512' YAML git add "${versions_yml}" git commit -m "[Website] Add release note for ${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