HBASE-19420 Backport HBASE-19152 Update refguide 'how to build an RC' and the make_rc.sh script

Removes src.xml used building src tgz via hbase-assembly.

Use git archive instead going forward. Updates developer release candidate
documentation and the make_rc.sh script.

Slight modifications to developer.adoc for branch-1
This commit is contained in:
Andrew Purtell 2017-12-04 12:17:15 -08:00
parent 1fe75f98d3
commit 14318d734e
3 changed files with 758 additions and 657 deletions

View File

@ -28,8 +28,17 @@
set -e
devsupport=`dirname "$0"`
devsupport=`cd "$devsupport">/dev/null; pwd`
# Script checks out a tag, cleans the checkout and then builds src and bin
# tarballs. It then deploys to the apache maven repository.
# Presumes run from git dir.
# Need a git tag to build.
if [ "$1" = "" ]
then
echo -n "Usage: $0 TAG_TO_PACKAGE"
exit 1
fi
git_tag=$1
# Set mvn and mvnopts
mvn=mvn
@ -41,45 +50,67 @@ if [ "$MAVEN_OPTS" != "" ]; then
mvnopts="${MAVEN_OPTS}"
fi
# Make a dir to save tgzs in.
# Ensure we are inside a git repo before making progress
# The below will fail if outside git.
git -C . rev-parse
# Checkout git_tag
git checkout "${git_tag}"
# Get mvn protject version
#shellcheck disable=SC2016
version=$(${mvn} -q -N -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec)
hbase_name="hbase-${version}"
# Make a dir to save tgzs into.
d=`date -u +"%Y%m%dT%H%M%SZ"`
archivedir="$(pwd)/../`basename $0`.$d"
echo "Archive dir ${archivedir}"
mkdir -p "${archivedir}"
output_dir="/${TMPDIR}/$hbase_name.$d"
mkdir -p "${output_dir}"
function tgz_mover {
mv ./hbase-assembly/target/hbase-*.tar.gz "${archivedir}"
# Build src tgz.
function build_src {
git archive --format=tar.gz --output="${output_dir}/${hbase_name}-src.tar.gz" --prefix="${hbase_name}/" "${git_tag}"
}
function deploy {
MAVEN_OPTS="${mvnopts}" ${mvn} clean install -DskipTests -Prelease \
-Dmaven.repo.local=${archivedir}/repository
MAVEN_OPTS="${mvnopts}" ${mvn} install -DskipTests post-site assembly:single -Prelease \
-Dmaven.repo.local=${archivedir}/repository
tgz_mover
MAVEN_OPTS="${mvnopts}" ${mvn} deploy -DskipTests -Papache-release -Prelease \
-Dmaven.repo.local=${archivedir}/repository
# Build bin tgz
function build_bin {
MAVEN_OPTS="${mvnopts}" ${mvn} clean install -DskipTests -Papache-release -Prelease \
-Dmaven.repo.local=${output_dir}/repository
MAVEN_OPTS="${mvnopts}" ${mvn} install -DskipTests site assembly:single -Papache-release -Prelease \
-Dmaven.repo.local=${output_dir}/repository
mv ./hbase-assembly/target/hbase-*.tar.gz "${output_dir}"
}
# Build src tarball
# run clean separate from assembly:single because it fails to clean shaded modules correctly
# Make sure all clean.
git clean -f -x -d
MAVEN_OPTS="${mvnopts}" ${mvn} clean
MAVEN_OPTS="${mvnopts}" ${mvn} install -DskipTests assembly:single \
-Dassembly.file="$(pwd)/hbase-assembly/src/main/assembly/src.xml" \
-Prelease -Dmaven.repo.local=${archivedir}/repository
tgz_mover
# Now do the two builds, one for hadoop1, then hadoop2
deploy
# Run a rat check.
${mvn} apache-rat:check
echo "DONE"
echo "Check the content of ${archivedir}. If good, sign and push to dist.apache.org"
echo " cd ${archivedir}"
echo ' for i in *.tar.gz; do echo $i; gpg --print-mds $i > $i.mds ; done'
echo ' for i in *.tar.gz; do echo $i; gpg --print-md MD5 $i > $i.md5 ; done'
echo ' for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha ; done'
#Build src.
build_src
# Build bin product
build_bin
# Deploy to mvn repository
# Depends on build_bin having populated the local repository
# If the below upload fails, you will probably have to clean the partial
# upload from repository.apache.org by 'drop'ping it from the staging
# repository before restart.
MAVEN_OPTS="${mvnopts}" ${mvn} deploy -DskipTests -Papache-release -Prelease \
-Dmaven.repo.local=${output_dir}/repository
# Do sha1 and md5
cd ${output_dir}
for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha ; done
for i in *.tar.gz; do echo $i; gpg --print-md MD5 $i > $i.md5 ; done
echo "Check the content of ${output_dir}. If good, sign and push to dist.apache.org"
echo " cd ${output_dir}"
echo ' for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i ; done'
echo ' rsync -av ${archivedir}/*.gz ${archivedir}/*.mds ${archivedir}/*.asc ~/repos/dist-dev/hbase-VERSION/'
echo ' rsync -av ${output_dir}/*.gz ${output_dir}/*.md5 ${output_dir}/*.sha ${output_dir}/*.asc ${APACHE_HBASE_DIST_DEV_DIR}/${hbase_name}/'
echo "Check the content deployed to maven. If good, close the repo and record links of temporary staging repo"
echo "If all good tag the RC"

View File

@ -1,136 +0,0 @@
<?xml version="1.0"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
<!--
/**
* 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.
*/
-->
<!--Copies over all you need to build hbase-->
<id>src</id>
<formats>
<format>tar.gz</format>
</formats>
<moduleSets>
<moduleSet>
<!-- Enable access to all projects in the current multimodule build. Eclipse
says this is an error, but builds from the command line just fine. -->
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>org.apache.hbase:hbase-annotations</include>
<include>org.apache.hbase:hbase-archetypes</include>
<include>org.apache.hbase:hbase-assembly</include>
<include>org.apache.hbase:hbase-checkstyle</include>
<include>org.apache.hbase:hbase-client</include>
<include>org.apache.hbase:hbase-common</include>
<include>org.apache.hbase:hbase-examples</include>
<include>org.apache.hbase:hbase-external-blockcache</include>
<include>org.apache.hbase:hbase-hadoop2-compat</include>
<include>org.apache.hbase:hbase-hadoop-compat</include>
<include>org.apache.hbase:hbase-it</include>
<include>org.apache.hbase:hbase-prefix-tree</include>
<include>org.apache.hbase:hbase-procedure</include>
<include>org.apache.hbase:hbase-protocol</include>
<include>org.apache.hbase:hbase-rest</include>
<include>org.apache.hbase:hbase-resource-bundle</include>
<include>org.apache.hbase:hbase-server</include>
<include>org.apache.hbase:hbase-shaded</include>
<include>org.apache.hbase:hbase-shell</include>
<include>org.apache.hbase:hbase-testing-util</include>
<include>org.apache.hbase:hbase-thrift</include>
</includes>
<!-- Include all the sources in the top directory -->
<sources>
<excludeSubModuleDirectories>false</excludeSubModuleDirectories>
<fileSets>
<fileSet>
<includes>
<include>**</include>
</includes>
<!--Make sure this excludes is same as the hbase-hadoop2-compat
excludes below-->
<excludes>
<exclude>target/</exclude>
<exclude>test/</exclude>
<exclude>.classpath</exclude>
<exclude>.project</exclude>
<exclude>.settings/</exclude>
</excludes>
</fileSet>
</fileSets>
</sources>
</moduleSet>
</moduleSets>
<fileSets>
<!--This one is weird. When we assemble src, it'll be default profile which
at the moment is hadoop1. But we should include the hadoop2 compat module
too so can build hadoop2 from src -->
<fileSet>
<directory>${project.basedir}/../hbase-hadoop2-compat</directory>
<outputDirectory>hbase-hadoop2-compat</outputDirectory>
<fileMode>0644</fileMode>
<directoryMode>0755</directoryMode>
<excludes>
<exclude>target/</exclude>
<exclude>test/</exclude>
<exclude>.classpath</exclude>
<exclude>.project</exclude>
<exclude>.settings/</exclude>
</excludes>
</fileSet>
<!--Include dev tools-->
<fileSet>
<directory>${project.basedir}/../dev-support</directory>
<outputDirectory>dev-support</outputDirectory>
<fileMode>0644</fileMode>
<directoryMode>0755</directoryMode>
</fileSet>
<fileSet>
<directory>${project.basedir}/../src</directory>
<outputDirectory>src</outputDirectory>
<fileMode>0644</fileMode>
<directoryMode>0755</directoryMode>
</fileSet>
<!-- Include the top level conf directory -->
<fileSet>
<directory>${project.basedir}/../conf</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
<directoryMode>0755</directoryMode>
</fileSet>
<!-- Include top level bin directory -->
<fileSet>
<directory>${project.basedir}/../bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
<directoryMode>0755</directoryMode>
</fileSet>
<fileSet>
<directory>${project.basedir}/..</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>pom.xml</include>
<include>LICENSE.txt</include>
<include>NOTICE.txt</include>
<include>CHANGES.txt</include>
<include>README.txt</include>
<include>.pylintrc</include>
</includes>
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
</assembly>

File diff suppressed because it is too large Load Diff