HBASE-24476 release scripts should provide timing information (#2145)

Signed-off-by: Matt Foley <mattf@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
This commit is contained in:
Sean Busbey 2020-06-06 20:14:37 -05:00
parent fe5571bfe6
commit 3470feed91
No known key found for this signature in database
GPG Key ID: A926FD051016402D
2 changed files with 50 additions and 5 deletions

View File

@ -104,11 +104,14 @@ perl --version | grep 'This is'
rm -rf "${PROJECT}"
if is_debug; then
set -x # detailed logging during action
fi
if [[ "$1" == "tag" ]]; then
init_yetus
# for 'tag' stage
set -o pipefail
set -x # detailed logging during action
check_get_passwords ASF_PASSWORD
check_needed_vars PROJECT RELEASE_VERSION RELEASE_TAG NEXT_VERSION GIT_EMAIL GIT_NAME GIT_BRANCH
if [ -z "${GIT_REPO}" ]; then
@ -205,16 +208,13 @@ fi
git clean -d -f -x
cd ..
set -x # detailed logging during action
if [[ "$1" == "publish-dist" ]]; then
# Source and binary tarballs
echo "Packaging release source tarballs"
make_src_release "${PROJECT}" "${RELEASE_VERSION}"
echo "$(date -u +'%Y-%m-%dT%H:%M:%SZ') Building binary dist"
make_binary_release "${PROJECT}" "${RELEASE_VERSION}"
echo "$(date -u +'%Y-%m-%dT%H:%M:%SZ') Done building binary distribution"
if [[ "$PROJECT" =~ ^hbase- ]]; then
DEST_DIR_NAME="${PROJECT}-${package_version_name}"

View File

@ -58,21 +58,30 @@ function banner {
echo
}
# current number of seconds since epoch
function get_ctime {
date +"%s"
}
function run_silent {
local BANNER="$1"
local LOG_FILE="$2"
shift 2
local -i start_time
local -i stop_time
banner "${BANNER}"
echo "Command: $*"
echo "Log file: $LOG_FILE"
start_time="$(get_ctime)"
if ! "$@" 1>"$LOG_FILE" 2>&1; then
echo "Command FAILED. Check full logs for details."
tail "$LOG_FILE"
exit 1
fi
echo "=== SUCCESS"
stop_time="$(get_ctime)"
echo "=== SUCCESS ($((stop_time - start_time)) seconds)"
}
function fcreate_secure {
@ -447,6 +456,26 @@ function git_clone_overwrite {
fi
}
function start_step {
local name=$1
if [ -z "${name}" ]; then
name="${FUNCNAME[1]}"
fi
echo "$(date -u +'%Y-%m-%dT%H:%M:%SZ') ${name} start" >&2
get_ctime
}
function stop_step {
local name=$2
local start_time=$1
local stop_time
if [ -z "${name}" ]; then
name="${FUNCNAME[1]}"
fi
stop_time="$(get_ctime)"
echo "$(date -u +'%Y-%m-%dT%H:%M:%SZ') ${name} stop ($((stop_time - start_time)) seconds)"
}
# Writes report into cwd!
# TODO should have option for maintenance release that include LimitedPrivate in report
function generate_api_report {
@ -454,12 +483,15 @@ function generate_api_report {
local previous_tag="$2"
local release_tag="$3"
local previous_version
local timing_token
timing_token="$(start_step)"
# Generate api report.
"${project}"/dev-support/checkcompatibility.py --annotation \
org.apache.yetus.audience.InterfaceAudience.Public \
"$previous_tag" "$release_tag"
previous_version="$(echo "${previous_tag}" | sed -e 's/rel\///')"
cp "${project}/target/compat-check/report.html" "./api_compare_${previous_version}_to_${release_tag}.html"
stop_step "${timing_token}"
}
# Look up the Jira name associated with project.
@ -488,6 +520,8 @@ function update_releasenotes {
local project_dir="$1"
local jira_fix_version="$2"
local jira_project
local timing_token
timing_token="$(start_step)"
jira_project="$(get_jira_name "$(basename "$project_dir")")"
"${YETUS_HOME}/bin/releasedocmaker" -p "${jira_project}" --fileversions -v "${jira_fix_version}" \
-l --sortorder=newer --skip-credits
@ -523,6 +557,7 @@ function update_releasenotes {
else
mv "RELEASENOTES.${jira_fix_version}.md" "${project_dir}/RELEASENOTES.md"
fi
stop_step "${timing_token}"
}
# Make src release.
@ -539,6 +574,8 @@ make_src_release() {
local project="${1}"
local version="${2}"
local base_name="${project}-${version}"
local timing_token
timing_token="$(start_step)"
rm -rf "${base_name}"-src*
tgz="${base_name}-src.tar.gz"
cd "${project}" || exit
@ -547,6 +584,7 @@ make_src_release() {
cd .. || exit
$GPG "${GPG_ARGS[@]}" --armor --output "${tgz}.asc" --detach-sig "${tgz}"
$GPG "${GPG_ARGS[@]}" --print-md SHA512 "${tgz}" > "${tgz}.sha512"
stop_step "${timing_token}"
}
# Make binary release.
@ -563,6 +601,8 @@ make_binary_release() {
local project="${1}"
local version="${2}"
local base_name="${project}-${version}"
local timing_token
timing_token="$(start_step)"
rm -rf "${base_name}"-bin*
cd "$project" || exit
@ -590,6 +630,8 @@ make_binary_release() {
cd .. || exit
echo "No ${f_bin_prefix}*-bin.tar.gz product; expected?"
fi
stop_step "${timing_token}"
}
# "Wake up" the gpg agent so it responds properly to maven-gpg-plugin, and doesn't cause timeout.
@ -621,6 +663,7 @@ function maven_get_version {
# Do maven deploy to snapshot or release artifact repository, with checks.
function maven_deploy { #inputs: <snapshot|release> <log_file_path>
local timing_token
# Invoke with cwd=$PROJECT
local deploy_type="$1"
local mvn_log_file="$2" #secondary log file used later to extract staged_repo_id
@ -630,6 +673,7 @@ function maven_deploy { #inputs: <snapshot|release> <log_file_path>
if [[ -z "$mvn_log_file" ]] || ! touch "$mvn_log_file"; then
error "must provide writable maven log output filepath"
fi
timing_token=$(start_step)
# shellcheck disable=SC2153
if [[ "$deploy_type" == "snapshot" ]] && ! [[ "$RELEASE_VERSION" =~ -SNAPSHOT$ ]]; then
error "Snapshots must have a version with suffix '-SNAPSHOT'; you gave version '$RELEASE_VERSION'"
@ -660,6 +704,7 @@ function maven_deploy { #inputs: <snapshot|release> <log_file_path>
error "Deploy build failed, for details see log at '$mvn_log_file'."
fi
echo "BUILD SUCCESS."
stop_step "${timing_token}"
return 0
}