[HUDI-249] Update Release-notes. Add sign-artifacts to POM and release related scripts. Add missing license headers
This commit is contained in:
committed by
Balaji Varadarajan
parent
895d732a14
commit
58623631d4
82
release/scripts/create_source_release.sh
Executable file
82
release/scripts/create_source_release.sh
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/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.
|
||||
#
|
||||
|
||||
##
|
||||
## Variables with defaults (if not overwritten by environment)
|
||||
##
|
||||
MVN=${MVN:-mvn}
|
||||
|
||||
# fail immediately
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
# print command before executing
|
||||
set -o xtrace
|
||||
|
||||
CURR_DIR=`pwd`
|
||||
if [[ `basename $CURR_DIR` != "release" ]] ; then
|
||||
echo "You have to call the script from the release/ dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RELEASE_VERSION=`grep -A 5 "<artifactId>hudi</artifactId>" ../pom.xml | grep '<version>' | sed -e 's/<version>//' -e 's/<\/version>//' -e 's/ //g'`
|
||||
|
||||
if [ -z "${RELEASE_VERSION}" ]; then
|
||||
echo "RELEASE_VERSION was not set."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "RELEASE_VERSION=${RELEASE_VERSION}"
|
||||
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
SHASUM="shasum -a 512"
|
||||
else
|
||||
SHASUM="sha512sum"
|
||||
fi
|
||||
|
||||
###########################
|
||||
|
||||
cd ..
|
||||
|
||||
HUDI_DIR=`pwd`
|
||||
RELEASE_DIR=${HUDI_DIR}/src_release
|
||||
CLONE_DIR=${RELEASE_DIR}/hudi-tmp-clone
|
||||
|
||||
echo "Creating source package"
|
||||
|
||||
rm -rf ${RELEASE_DIR}
|
||||
mkdir -p ${RELEASE_DIR}
|
||||
|
||||
# create a temporary git clone to ensure that we have a pristine source release
|
||||
git clone ${HUDI_DIR} ${CLONE_DIR}
|
||||
cd ${CLONE_DIR}
|
||||
|
||||
rsync -a \
|
||||
--exclude ".git" --exclude ".gitignore" --exclude ".gitattributes" --exclude ".travis.yml" \
|
||||
--exclude ".github" --exclude "target" \
|
||||
--exclude ".idea" --exclude "*.iml" --exclude ".DS_Store" --exclude "build-target" \
|
||||
--exclude "docs/content" --exclude ".rubydeps" \
|
||||
. hudi-$RELEASE_VERSION
|
||||
|
||||
tar czf ${RELEASE_DIR}/hudi-${RELEASE_VERSION}.src.tgz hudi-$RELEASE_VERSION
|
||||
gpg --armor --detach-sig ${RELEASE_DIR}/hudi-${RELEASE_VERSION}.src.tgz
|
||||
cd ${RELEASE_DIR}
|
||||
$SHASUM hudi-${RELEASE_VERSION}.src.tgz > hudi-${RELEASE_VERSION}.src.tgz.sha512
|
||||
|
||||
cd ${CURR_DIR}
|
||||
rm -rf ${CLONE_DIR}
|
||||
138
release/scripts/cut_release_branch.sh
Executable file
138
release/scripts/cut_release_branch.sh
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/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 update apache hudi (incubating) master branch with next release version
|
||||
# and cut release branch for current development version.
|
||||
|
||||
# Parse parameters passing into the script
|
||||
|
||||
set -e
|
||||
|
||||
function clean_up(){
|
||||
echo "Do you want to clean local clone repo? [y|N]"
|
||||
read confirmation
|
||||
if [[ $confirmation = "y" ]]; then
|
||||
cd ~
|
||||
rm -rf ${LOCAL_CLONE_DIR}
|
||||
echo "Clean up local repo."
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ $# -eq 1 && $1 = "-h" ]]; then
|
||||
echo "This script will update apache hudi(incubating) master branch with next release version and cut release branch for current development version."
|
||||
echo "There are two params required:"
|
||||
echo "--release=\${CURRENT_RELEASE_VERSION}"
|
||||
echo "--next_release=\${NEXT_RELEASE_VERSION}"
|
||||
exit
|
||||
else
|
||||
for param in "$@"
|
||||
do
|
||||
if [[ $param =~ --release\=([0-9]\.[0-9]*\.[0-9]) ]]; then
|
||||
RELEASE=${BASH_REMATCH[1]}
|
||||
fi
|
||||
if [[ $param =~ --next_release\=([0-9]\.[0-9]*\.[0-9]) ]]; then
|
||||
NEXT_VERSION_IN_BASE_BRANCH=${BASH_REMATCH[1]}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if [[ -z "$RELEASE" || -z "$NEXT_VERSION_IN_BASE_BRANCH" ]]; then
|
||||
echo "This sricpt needs to be ran with params, please run with -h to get more instructions."
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
MASTER_BRANCH=master
|
||||
RELEASE_BRANCH=release-${RELEASE}
|
||||
GITHUB_REPO_URL=https://gitbox.apache.org/repos/asf/incubator-hudi.git
|
||||
HUDI_ROOT_DIR=incubator-hudi
|
||||
LOCAL_CLONE_DIR=hudi_release_${RELEASE}
|
||||
|
||||
echo "=====================Environment Variables====================="
|
||||
echo "version: ${RELEASE}"
|
||||
echo "next_release: ${NEXT_VERSION_IN_BASE_BRANCH}"
|
||||
echo "working master branch: ${MASTER_BRANCH}"
|
||||
echo "working release branch: ${RELEASE_BRANCH}"
|
||||
echo "local repo dir: ~/${LOCAL_CLONE_DIR}/${HUDI_ROOT_DIR}"
|
||||
echo "==============================================================="
|
||||
|
||||
cd ~
|
||||
if [[ -d ${LOCAL_CLONE_DIR} ]]; then
|
||||
rm -rf ${LOCAL_CLONE_DIR}
|
||||
fi
|
||||
mkdir ${LOCAL_CLONE_DIR}
|
||||
cd ${LOCAL_CLONE_DIR}
|
||||
git clone ${GITHUB_REPO_URL}
|
||||
cd ${HUDI_ROOT_DIR}
|
||||
|
||||
# Create local release branch
|
||||
git branch ${RELEASE_BRANCH}
|
||||
|
||||
git checkout ${MASTER_BRANCH}
|
||||
|
||||
echo "====================Current working branch====================="
|
||||
echo ${MASTER_BRANCH}
|
||||
echo "==============================================================="
|
||||
|
||||
# Update master branch
|
||||
mvn versions:set -DnewVersion=${NEXT_VERSION_IN_BASE_BRANCH}-SNAPSHOT
|
||||
|
||||
echo "==============Update master branch as following================"
|
||||
git diff
|
||||
echo "==============================================================="
|
||||
|
||||
echo "Please make sure all changes above are expected. Do you confirm to commit?: [y|N]"
|
||||
read confirmation
|
||||
if [[ $confirmation != "y" ]]; then
|
||||
echo "Exit without committing any changes on master branch."
|
||||
clean_up
|
||||
exit
|
||||
fi
|
||||
|
||||
git commit -am "Moving to ${NEXT_VERSION_IN_BASE_BRANCH}-SNAPSHOT on master branch."
|
||||
|
||||
#if git push origin ${MASTER_BRANCH}; then
|
||||
# break
|
||||
#else
|
||||
# clean_up
|
||||
# exit
|
||||
#fi
|
||||
|
||||
# Checkout and update release branch - Add incubating and remove snapshot
|
||||
git checkout ${RELEASE_BRANCH}
|
||||
mvn versions:set -DnewVersion=${RELEASE}-incubating
|
||||
|
||||
echo "==================Current working branch======================="
|
||||
echo ${RELEASE_BRANCH}
|
||||
echo "==============================================================="
|
||||
|
||||
echo "===============Update release branch as following=============="
|
||||
git diff
|
||||
echo "==============================================================="
|
||||
|
||||
echo "Please make sure all changes above are expected. Do you confirm to commit?: [y|N]"
|
||||
read confirmation
|
||||
if [[ $confirmation != "y" ]]; then
|
||||
echo "Exit without committing any changes on release branch."
|
||||
clean_up
|
||||
exit
|
||||
fi
|
||||
|
||||
git commit -am "Create release branch for version ${RELEASE}."
|
||||
#git push --set-upstream origin ${RELEASE_BRANCH}
|
||||
|
||||
clean_up
|
||||
44
release/scripts/deploy_staging_jars.sh
Executable file
44
release/scripts/deploy_staging_jars.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/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.
|
||||
#
|
||||
|
||||
##
|
||||
## Variables with defaults (if not overwritten by environment)
|
||||
##
|
||||
MVN=${MVN:-mvn}
|
||||
|
||||
# fail immediately
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
# print command before executing
|
||||
set -o xtrace
|
||||
|
||||
CURR_DIR=`pwd`
|
||||
if [[ `basename $CURR_DIR` != "release" ]] ; then
|
||||
echo "You have to call the script from the release/ dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
###########################
|
||||
|
||||
cd ..
|
||||
|
||||
echo "Deploying to repository.apache.org"
|
||||
|
||||
COMMON_OPTIONS="-Prelease -DskipTests -DretryFailedDeploymentCount=10 -DdeployArtifacts=true"
|
||||
$MVN clean deploy $COMMON_OPTIONS
|
||||
104
release/scripts/preparation_before_release.sh
Executable file
104
release/scripts/preparation_before_release.sh
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/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 install and configure GPG key.
|
||||
|
||||
set -e
|
||||
|
||||
LOCAL_SVN_DIR=local_svn_dir
|
||||
ROOT_SVN_URL=https://dist.apache.org/repos/dist/
|
||||
DEV_REPO=dev
|
||||
RELEASE_REPO=release
|
||||
BEAM_REPO=hudi
|
||||
|
||||
cd ~
|
||||
|
||||
echo "=================Checking GPG Key===================="
|
||||
echo "You need a GPG key which reflects your Apache account."
|
||||
echo "Do you want to generate a new GPG key associated with your Apache account? [y|N]"
|
||||
read confirmation
|
||||
if [[ $confirmation = "y" ]]; then
|
||||
echo "===============Generating new GPG key================"
|
||||
sudo apt-get install rng-tools
|
||||
sudo rngd -r /dev/urandom
|
||||
gpg --full-generate-key
|
||||
fi
|
||||
|
||||
echo "================Listing all GPG keys================="
|
||||
gpg --list-keys
|
||||
echo "Please copy the public key which is associated with your Apache account:"
|
||||
read pub_key
|
||||
|
||||
echo "===========Configuring git signing key==============="
|
||||
git config --global user.signingkey $pub_key
|
||||
git config --list
|
||||
|
||||
echo "===========Adding your key into KEYS file============"
|
||||
echo "It's required to append your key into KEYS file in dist.apache.org"
|
||||
echo "Have you put your key in KEYS? [y|N]"
|
||||
read confirmation
|
||||
if [[ $confirmation != "y" ]]; then
|
||||
echo "Only PMC member can write into dist.apache.org. Are you a PMC member? [y|N]"
|
||||
read pmc_permission
|
||||
if [[ $pmc_permission != "y" ]]; then
|
||||
echo "Please ask a PMC member to help you add your key in dev@ list."
|
||||
echo "Skip adding key into dist.apache.org/KEYS file."
|
||||
else
|
||||
echo "Please input your name: "
|
||||
read name
|
||||
echo "======Starting updating KEYS file in dev repo===="
|
||||
if [[ -d ${LOCAL_SVN_DIR} ]]; then
|
||||
rm -rf ${LOCAL_SVN_DIR}
|
||||
fi
|
||||
mkdir ${LOCAL_SVN_DIR}
|
||||
cd ${LOCAL_SVN_DIR}
|
||||
svn co ${ROOT_SVN_URL}/${DEV_REPO}/${BEAM_REPO}
|
||||
cd ${BEAM_REPO}
|
||||
(gpg --list-sigs ${name} && gpg --armor --export ${name}) >> KEYS
|
||||
svn status
|
||||
echo "Please review all changes. Do you confirm to commit? [y|N]"
|
||||
read commit_confirmation
|
||||
if [[ $commit_confirmation = "y" ]]; then
|
||||
svn commit --no-auth-cache KEYS
|
||||
else
|
||||
echo "Not commit new changes into ${ROOT_SVN_URL}/${DEV_REPO}/${BEAM_REPO}${DEV_REPO}/KEYS"
|
||||
fi
|
||||
|
||||
cd ~/${LOCAL_SVN_DIR}
|
||||
echo "===Starting updating KEYS file in release repo==="
|
||||
svn co ${ROOT_SVN_URL}/${RELEASE_REPO}/${BEAM_REPO}
|
||||
cd ${BEAM_REPO}
|
||||
(gpg --list-sigs ${name} && gpg --armor --export ${name}) >> KEYS
|
||||
svn status
|
||||
echo "Please review all changes. Do you confirm to commit? [y|N]"
|
||||
read commit_confirmation
|
||||
if [[ $commit_confirmation = "y" ]]; then
|
||||
svn commit --no-auth-cache KEYS
|
||||
else
|
||||
echo "Not commit new changes into ${ROOT_SVN_URL}/${DEV_REPO}/${BEAM_REPO}${RELEASE_REPO}/KEYS"
|
||||
fi
|
||||
|
||||
cd ~
|
||||
rm -rf ${LOCAL_SVN_DIR}
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "================Setting up gpg agent================="
|
||||
eval $(gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info)
|
||||
export GPG_TTY=$(tty)
|
||||
export GPG_AGENT_INFO
|
||||
Reference in New Issue
Block a user