This is an automated email from the ASF dual-hosted git repository.
altay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 8f1d86e Automate "Build a release candidate" step (#6059)
8f1d86e is described below
commit 8f1d86ea7bd5b118bc7e638d4d484445101526a1
Author: Boyuan Zhang <[email protected]>
AuthorDate: Fri Aug 3 10:13:32 2018 -0700
Automate "Build a release candidate" step (#6059)
* Automate "Build a release candidate" step
* Addressed bugs found in 2.6.0 rc1 creation
---
.../src/main/scripts/build_release_candidate.sh | 273 +++++++++++++++++++++
1 file changed, 273 insertions(+)
diff --git a/release/src/main/scripts/build_release_candidate.sh
b/release/src/main/scripts/build_release_candidate.sh
new file mode 100755
index 0000000..5102954
--- /dev/null
+++ b/release/src/main/scripts/build_release_candidate.sh
@@ -0,0 +1,273 @@
+#!/bin/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.
+#
+
+# This script will create a Release Candidate, includes:
+# 1. Build and stage java artifacts
+# 2. Stage source release on dist.apache.org
+# 3. Stage python binaries
+# 4. Create a PR to update beam-site
+
+set -e
+
+LOCAL_CLONE_DIR=build_release_candidate
+LOCAL_JAVA_STAGING_DIR=java_staging_dir
+LOCAL_PYTHON_STAGING_DIR=python_staging_dir
+LOCAL_WEBSITE_UPDATE_DIR=website_update_dir
+LOCAL_PYTHON_DOC=python_doc
+LOCAL_JAVA_DOC=java_doc
+LOCAL_WEBSITE_REPO=beam_website_repo
+
+USER_REMOTE_URL=
+USER_GITHUB_ID=
+GIT_REPO_URL=https://github.com/apache/beam.git
+ROOT_SVN_URL=https://dist.apache.org/repos/dist/dev/beam
+GIT_BEAM_ARCHIVE=https://github.com/apache/beam/archive
+GIT_BEAM_WEBSITE=https://github.com/apache/beam-site.git
+
+PYTHON_ARTIFACTS_DIR=python
+BEAM_ROOT_DIR=beam
+WEBSITE_ROOT_DIR=beam-site
+
+
+echo "================Setting Up Environment Variables==========="
+echo "Which release version are you working on: "
+read RELEASE
+RELEASE_BRANCH=release-${RELEASE}
+echo "Which release candidate number(e.g. 1) are you going to create: "
+read RC_NUM
+echo "Please enter your repo URL forked from apache/beam-site"
+read USER_REMOTE_URL
+echo "Please enter your github username(ID): "
+read USER_GITHUB_ID
+
+echo "================Checking Environment Variables=============="
+echo "beam repo will be cloned into: ${LOCAL_CLONE_DIR}"
+echo "working on release version: ${RELEASE}"
+echo "working on release branch: ${RELEASE_BRANCH}"
+echo "will create release candidate: RC${RC_NUM}"
+echo "Your forked beam-site URL: ${USER_REMOTE_URL}"
+echo "Please review all environment variables and confirm: [y|N]"
+read confirmation
+if [[ $confirmation != "y" ]]; then
+ echo "Please rerun this script and make sure you have the right inputs."
+ exit
+fi
+
+
+echo "[Current Step]: Build and stage java artifacts"
+echo "Do you want to proceed? [y|N]"
+read confirmation
+if [[ $confirmation = "y" ]]; then
+ echo "============Building and Staging Java Artifacts============="
+ echo "--------Cloning Beam Repo and Checkout Release Branch-------"
+ cd ~
+ mkdir ${LOCAL_CLONE_DIR}
+ cd ${LOCAL_CLONE_DIR}
+ git clone ${GIT_REPO_URL}
+ cd ${BEAM_ROOT_DIR}
+ git checkout ${RELEASE_BRANCH}
+
+ echo "-------------Building Java Artifacts with Gradle-------------"
+ git config credential.helper store
+
+ ./gradlew release -Prelease.newVersion=${RELEASE}-SNAPSHOT \
+ -Prelease.releaseVersion=${RELEASE}-RC${RC_NUM} \
+ -Prelease.useAutomaticVersion=true --info --no-daemon
+
+ echo "Please make sure gradle release succeed: "
+ echo "1. release code has been pushed to github repo."
+ echo "2. new rc tag has created in github."
+
+ echo "-------------Staging Java Artifacts into Maven---------------"
+ ./gradlew publish -PisRelease --no-parallel --no-daemon
+ echo "Please review all artifacts in
https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.beam%22"
+ rm -rf ~/${LOCAL_CLONE_DIR}
+fi
+
+echo "[Current Step]: Stage source release on dist.apache.org"
+echo "Do you want to proceed? [y|N]"
+read confirmation
+if [[ $confirmation = "y" ]]; then
+ echo "=========Staging Source Release on dist.apache.org==========="
+ cd ~
+ mkdir ${LOCAL_JAVA_STAGING_DIR}
+ cd ${LOCAL_JAVA_STAGING_DIR}
+ svn co ${ROOT_SVN_URL}
+ mkdir beam/${RELEASE}
+ cd beam/${RELEASE}
+
+ echo "----------------Downloading Source Release-------------------"
+ echo "Downloading: ${GIT_BEAM_ARCHIVE}/release-${RELEASE}.zip"
+ wget ${GIT_BEAM_ARCHIVE}/release-${RELEASE}.zip -O
apache-beam-${RELEASE}-source-release.zip
+
+ echo "----Signing Source Release
apache-beam-${RELEASE}-source-release.zip-----"
+ gpg --armor --detach-sig apache-beam-${RELEASE}-source-release.zip
+
+ echo "----Creating Hash Value for
apache-beam-${RELEASE}-source-release.zip----"
+ sha512sum apache-beam-${RELEASE}-source-release.zip >
apache-beam-${RELEASE}-source-release.zip.sha512
+
+ svn add .
+ svn status
+ echo "Please confirm these changes are ready to commit: [y|N] "
+ read confirmation
+ if [[ $confirmation != "y" ]]; then
+ echo "Exit without staging source release on dist.apache.org."
+ rm -rf ~/${LOCAL_JAVA_STAGING_DIR}
+ exit
+ fi
+ svn commit
+ rm -rf ~/${LOCAL_JAVA_STAGING_DIR}
+fi
+
+echo "[Current Step]: Stage python binaries"
+echo "Do you want to proceed? [y|N]"
+read confirmation
+if [[ $confirmation = "y" ]]; then
+ echo "============Staging Python Binaries on dist.apache.org========="
+ cd ~
+ mkdir ${LOCAL_PYTHON_STAGING_DIR}
+ cd ${LOCAL_PYTHON_STAGING_DIR}
+
+ echo '-------------------Cloning Beam Release Branch-----------------'
+ git clone ${GIT_REPO_URL}
+ cd ${BEAM_ROOT_DIR}
+ git checkout ${RELEASE_BRANCH}
+
+ echo '-------------------Generating Python Artifacts-----------------'
+ cd sdks/python
+ python setup.py sdist --format=zip
+ cd dist
+
+ svn co https://dist.apache.org/repos/dist/dev/beam
+ mkdir beam/${RELEASE}/${PYTHON_ARTIFACTS_DIR}
+ cp apache-beam-${RELEASE}.zip
beam/${RELEASE}/${PYTHON_ARTIFACTS_DIR}/apache-beam-${RELEASE}.zip
+ cd beam/${RELEASE}/${PYTHON_ARTIFACTS_DIR}
+
+ echo "------Signing Source Release apache-beam-${RELEASE}.zip------"
+ gpg --armor --detach-sig apache-beam-${RELEASE}.zip
+
+ echo "------Creating Hash Value for apache-beam-${RELEASE}.zip------"
+ sha512sum apache-beam-${RELEASE}.zip > apache-beam-${RELEASE}.zip.sha512
+
+ cd ..
+ svn add ${PYTHON_ARTIFACTS_DIR}
+ svn status
+ echo "Please confirm these changes are ready to commit: [y|N] "
+ read confirmation
+ if [[ $confirmation != "y" ]]; then
+ echo "Exit without staging python artifacts on dist.apache.org."
+ rm -rf ~/${PYTHON_ARTIFACTS_DIR}
+ exit
+ fi
+ svn commit
+ rm -rf ~/${PYTHON_ARTIFACTS_DIR}
+fi
+
+echo "[Current Step]: Update beam-site"
+echo "Do you want to proceed? [y|N]"
+read confirmation
+if [[ $confirmation = "y" ]]; then
+ echo "==============Creating PR for Updating Website==============="
+ cd ~
+ mkdir ${LOCAL_WEBSITE_UPDATE_DIR}
+ cd ${LOCAL_WEBSITE_UPDATE_DIR}
+ mkdir ${LOCAL_PYTHON_DOC}
+ mkdir ${LOCAL_JAVA_DOC}
+ mkdir ${LOCAL_WEBSITE_REPO}
+
+ echo "------------------Building Python Doc------------------------"
+ cd ${LOCAL_PYTHON_DOC}
+ pip install tox
+ git clone ${GIT_REPO_URL}
+ cd ${BEAM_ROOT_DIR}
+ git checkout ${RELEASE_BRANCH}
+ cd sdks/python && tox -e docs
+
GENERATED_PYDOC=~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_PYTHON_DOC}/${BEAM_ROOT_DIR}/sdks/python/target/docs/_build
+
+ echo "----------------------Building Java Doc----------------------"
+ cd ~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_JAVA_DOC}
+ git clone ${GIT_REPO_URL}
+ cd ${BEAM_ROOT_DIR}
+ git checkout ${RELEASE_BRANCH}
+ ./gradlew :beam-sdks-java-javadoc:aggregateJavadoc
+
GENERATE_JAVADOC=~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_JAVA_DOC}/${BEAM_ROOT_DIR}/sdks/java/javadoc/build/docs/javadoc/
+
+ echo "------------------Updating Beam Website---------------------"
+ cd ~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_WEBSITE_REPO}
+ git clone ${GIT_BEAM_WEBSITE}
+ cd ${WEBSITE_ROOT_DIR}
+ git checkout -b updates_release_${RELEASE}
+
+ echo "..........Updating release version in _config.yml..........."
+ sed -i -e "s/release_latest: [0-9].[0-9].[0-9]/release_latest: ${RELEASE}/g"
_config.yml
+
+ echo "..........Copying generated javadoc into beam-site.........."
+ cp -r ${GENERATE_JAVADOC} src/documentation/sdks/javadoc/${RELEASE}
+ echo "Updating javadoc current.md with latest release version number"
+ sed -i -e "s/[0-9].[0-9].[0-9]/${RELEASE}/g"
src/documentation/sdks/javadoc/current.md
+
+ echo "............Copying generated pydoc into beam-site.........."
+ cp -r ${GENERATED_PYDOC} src/documentation/sdks/pydoc/${RELEASE}
+ echo ".....Updating pydoc current.md with latest release version
number......"
+ sed -i -e "s/[0-9].[0-9].[0-9]/${RELEASE}/g"
src/documentation/sdks/pydoc/current.md
+
+ git add -A
+ git commit -m "Update beam-site for release ${RELEASE}"
+ git push ${USER_REMOTE_URL}
+
+ if [[ -z `which hub` ]]; then
+ echo "You don't have hub installed, do you want to install hub with sudo
permission? [y|N]"
+ read confirmation
+ if [[ $confirmation = "y" ]]; then
+ HUB_VERSION=2.5.0
+ HUB_ARTIFACTS_NAME=hub-linux-amd64-${HUB_VERSION}
+ wget
https://github.com/github/hub/releases/download/v${HUB_VERSION}/${HUB_ARTIFACTS_NAME}.tgz
+ tar zvxvf ${HUB_ARTIFACTS_NAME}.tgz
+ sudo ./${HUB_ARTIFACTS_NAME}/install
+ echo "eval "$(hub alias -s)"" >> ~/.bashrc
+ rm -rf ${HUB_ARTIFACTS_NAME}*
+ fi
+ fi
+ if [[ -z `which hub` ]]; then
+ hub pull-request -m "Publish ${RELEASE} release" -h
${USER_GITHUB_ID}:updates_release_${RELEASE} -b apache:asf-site
+ else
+ echo "Without hub, you need to create PR manually."
+ fi
+
+ echo "Finished v${RELEASE}-RC${RC_NUM} creation."
+ rm -rf ~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_JAVA_DOC}
+ rm -rf ~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_PYTHON_DOC}
+fi
+
+echo "===========Please Review All Items in the Checklist=========="
+echo "1. Maven artifacts deployed to
https://repository.apache.org/content/repositories/"
+echo "2. Source distribution deployed to
https://dist.apache.org/repos/dist/dev/beam/${RELEASE}"
+echo "3. Website pull request published the Java API reference manual the
Python API reference manual."
+
+echo "==============Things Needed To Be Done Manually=============="
+echo "1.You need to update website updates PR with a new commit: "
+echo " - cd
~/${LOCAL_WEBSITE_UPDATE_DIR}/${LOCAL_WEBSITE_REPO}/${WEBSITE_ROOT_DIR}"
+echo " - git checkout updates_release_${RELEASE}"
+echo " - Add new release into src/get-started/downloads.md "
+echo " - commit your changes"
+echo "2.You need to update website updates PR with another commit:
src/get-started/downloads.md"
+echo " - add new release download links like commit: "
+echo "
https://github.com/apache/beam-site/commit/29394625ce54f0c5584c3db730d3eb6bf365a80c#diff-abdcc989e94369c2324cf64b66659eda"
+echo " - update last release download links from release to archive like
commit: "
+echo "
https://github.com/apache/beam-site/commit/6b9bdb31324d5c0250a79224507da0ea7ae8ccbf#diff-abdcc989e94369c2324cf64b66659eda"
+echo "3.Start the review-and-vote thread on the dev@ mailing list."