You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2020/08/02 03:45:01 UTC
[hbase] branch master updated: HBASE-24476 release scripts should
provide timing information (#2145)
This is an automated email from the ASF dual-hosted git repository.
busbey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 3470fee HBASE-24476 release scripts should provide timing information (#2145)
3470fee is described below
commit 3470feed91740585df54a0d71420f5fd45e7c971
Author: Sean Busbey <bu...@apache.org>
AuthorDate: Sat Jun 6 20:14:37 2020 -0500
HBASE-24476 release scripts should provide timing information (#2145)
Signed-off-by: Matt Foley <ma...@apache.org>
Signed-off-by: Duo Zhang <zh...@apache.org>
Signed-off-by: Nick Dimiduk <nd...@apache.org>
---
dev-support/create-release/release-build.sh | 8 ++---
dev-support/create-release/release-util.sh | 47 ++++++++++++++++++++++++++++-
2 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/dev-support/create-release/release-build.sh b/dev-support/create-release/release-build.sh
index e526836..1a2ac8c 100755
--- a/dev-support/create-release/release-build.sh
+++ b/dev-support/create-release/release-build.sh
@@ -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}"
diff --git a/dev-support/create-release/release-util.sh b/dev-support/create-release/release-util.sh
index 1f618f2..ee3fee6 100755
--- a/dev-support/create-release/release-util.sh
+++ b/dev-support/create-release/release-util.sh
@@ -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
}