From 86d3357ff618452f50cc00f060674a3c97defb51 Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 13:33:19 -0600 Subject: [PATCH 01/10] Include realized build time savings in exp1-gradle non-interactive --- .../01-validate-incremental-building.sh | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 45c079bf..de123e52 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -63,6 +63,9 @@ execute() { execute_second_build rename_project_dir "build_${project_name}" "second-build_${project_name}" + print_bl + fetch_build_cache_metrics + print_bl print_summary } @@ -125,6 +128,23 @@ execute_second_build() { invoke_gradle --no-build-cache ${tasks} } +fetch_build_cache_metrics() { + read_build_scan_metadata + fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}" +} + +# Overrides info.sh#print_performance_metrics +print_performance_metrics() { + print_performance_characteristics +} + +# Overrides info.sh#print_performance_characteristics +print_performance_characteristics() { + print_performance_characteristics_header + + print_realized_build_time_savings +} + print_quick_links() { info "Investigation Quick Links" info "-------------------------" From fa3e7d8a3a791caabe6a7f600a706877cfde692a Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 13:41:02 -0600 Subject: [PATCH 02/10] Include realized build time savings in exp1-gradle interactive --- .../gradle/01-validate-incremental-building.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index de123e52..3bb8324e 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -109,6 +109,8 @@ wizard_execute() { print_bl explain_measure_build_results print_bl + fetch_build_cache_metrics + print_bl explain_and_print_summary } @@ -264,6 +266,8 @@ most relevant views in build scans to investigate what tasks were uptodate and what tasks executed in the second build, which of those tasks had the biggest impact on build performance, and what caused those tasks to not be uptodate. +$(explain_performance_characteristics) + $(explain_command_to_repeat_experiment) $(print_summary) @@ -275,5 +279,14 @@ EOF print_wizard_text "${text}" } +explain_performance_characteristics() { + local text + IFS='' read -r -d '' text < Date: Wed, 28 Dec 2022 13:42:21 -0600 Subject: [PATCH 03/10] Display -x in exp1-gradle help text --- components/scripts/lib/cli-parsers/gradle/01-cli-parser.m4 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/scripts/lib/cli-parsers/gradle/01-cli-parser.m4 b/components/scripts/lib/cli-parsers/gradle/01-cli-parser.m4 index e246680c..3759a1e1 100755 --- a/components/scripts/lib/cli-parsers/gradle/01-cli-parser.m4 +++ b/components/scripts/lib/cli-parsers/gradle/01-cli-parser.m4 @@ -1,6 +1,7 @@ #!/usr/bin/env bash # shellcheck disable=SC2034 # It is common for variables in this auto-generated file to go unused # Created by argbash-init v2.10.0 +# ARG_OPTIONAL_BOOLEAN([disable-build-scan-publishing],[x],[]) # ARG_HELP([This function is overridden later on.]) # ARG_VERSION([print_version],[v],[version],[]) # ARGBASH_WRAP([common]) @@ -27,6 +28,7 @@ function print_help() { print_option_usage -a print_option_usage -s print_option_usage -e + print_option_usage -x print_option_usage -v print_option_usage -h } From 12efcc6e7375f8d5862c8fba7acf5082eab8677c Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 13:50:21 -0600 Subject: [PATCH 04/10] Support running exp1-gradle with -x non-interactively --- .../01-validate-incremental-building.sh | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 3bb8324e..8c2017f3 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -39,6 +39,10 @@ ge_server='' interactive_mode='' main() { + if [[ "$build_scan_publishing_mode" == "off" ]]; then + verify_build_scan_support_tool_exists + fi + if [ "${interactive_mode}" == "on" ]; then wizard_execute else @@ -114,25 +118,38 @@ wizard_execute() { explain_and_print_summary } +# shellcheck disable=SC2086 # splitting expected execute_first_build() { info "Running first build:" - info "./gradlew --no-build-cache --scan -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} clean ${tasks}$(print_extra_args)" - - # shellcheck disable=SC2086 # we want tasks to expand with word splitting in this case - invoke_gradle --no-build-cache clean ${tasks} + execute_build clean ${tasks} } +# shellcheck disable=SC2086 # splitting expected execute_second_build() { info "Running second build:" - info "./gradlew --no-build-cache --scan -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} ${tasks}$(print_extra_args)" + execute_build ${tasks} +} + +execute_build() { + print_gradle_command "$@" + invoke_gradle --no-build-cache "$@" +} - # shellcheck disable=SC2086 # we want tasks to expand with word splitting in this case - invoke_gradle --no-build-cache ${tasks} +print_gradle_command() { + if [[ "${build_scan_publishing_mode}" == "on" ]]; then + info "./gradlew --no-build-cache --scan -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} $*$(print_extra_args)" + else + info "./gradlew --no-build-cache -Dscan.dump -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} $*$(print_extra_args)" + fi } fetch_build_cache_metrics() { - read_build_scan_metadata - fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}" + if [ "$build_scan_publishing_mode" == "on" ]; then + read_build_scan_metadata + fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}" + else + find_and_read_build_scan_dumps + fi } # Overrides info.sh#print_performance_metrics @@ -142,9 +159,11 @@ print_performance_metrics() { # Overrides info.sh#print_performance_characteristics print_performance_characteristics() { - print_performance_characteristics_header + if [[ "$build_scan_publishing_mode" == "on" ]]; then + print_performance_characteristics_header - print_realized_build_time_savings + print_realized_build_time_savings + fi } print_quick_links() { From c58942da23d1e86a59fd35fd599920a55e76fbff Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 14:41:27 -0600 Subject: [PATCH 05/10] Move print performance metrics conditional --- .../scripts/gradle/01-validate-incremental-building.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 8c2017f3..15e80f48 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -154,16 +154,16 @@ fetch_build_cache_metrics() { # Overrides info.sh#print_performance_metrics print_performance_metrics() { - print_performance_characteristics + if [[ "$build_scan_publishing_mode" == "on" ]]; then + print_performance_characteristics + fi } # Overrides info.sh#print_performance_characteristics print_performance_characteristics() { - if [[ "$build_scan_publishing_mode" == "on" ]]; then print_performance_characteristics_header print_realized_build_time_savings - fi } print_quick_links() { From 340519d383088c43935aa5f644846c546749ea44 Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 14:54:55 -0600 Subject: [PATCH 06/10] Support running exp1-gradle with -x interactively --- .../01-validate-incremental-building.sh | 85 +++++++++++++++++-- 1 file changed, 80 insertions(+), 5 deletions(-) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 15e80f48..6298ac17 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -78,8 +78,16 @@ wizard_execute() { print_bl print_introduction - print_bl - explain_prerequisites_ccud_gradle_plugin "" + if [[ "${build_scan_publishing_mode}" == "on" ]]; then + print_bl + explain_prerequisites_ccud_gradle_plugin "I." + + print_bl + explain_prerequisites_api_access "II." + else + print_bl + explain_prerequisites_ccud_gradle_plugin + fi print_bl explain_collect_git_details @@ -257,16 +265,36 @@ EOF explain_measure_build_results() { local text - IFS='' read -r -d '' text < to measure the build results.${RESTORE} EOF + else + IFS='' read -r -d '' text < to measure the build results.${RESTORE} +EOF + fi print_wizard_text "${text}" wait_for_enter } @@ -298,6 +326,53 @@ EOF print_wizard_text "${text}" } +explain_and_print_summary() { + read_build_scan_metadata + local text + if [[ "${build_scan_publishing_mode}" == "on" ]]; then + IFS='' read -r -d '' text < Date: Wed, 28 Dec 2022 15:01:27 -0600 Subject: [PATCH 07/10] Clean up print_gradle_command --- .../scripts/gradle/01-validate-incremental-building.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 6298ac17..5b3f3dec 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -144,11 +144,13 @@ execute_build() { } print_gradle_command() { + local scan_arg if [[ "${build_scan_publishing_mode}" == "on" ]]; then - info "./gradlew --no-build-cache --scan -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} $*$(print_extra_args)" + scan_arg="--scan" else - info "./gradlew --no-build-cache -Dscan.dump -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} $*$(print_extra_args)" + scan_arg="-Dscan.dump" fi + info "./gradlew --no-build-cache ${scan_arg} -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} $*$(print_extra_args)" } fetch_build_cache_metrics() { From 19aee1edd7c5081ab7ca308bf4920d973fcdbc8a Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 15:05:36 -0600 Subject: [PATCH 08/10] Update changes.md --- release/changes.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release/changes.md b/release/changes.md index 470100fe..cb3b71f7 100644 --- a/release/changes.md +++ b/release/changes.md @@ -1 +1,2 @@ -- [NEW] Include realized build time savings in experiment summary +- [NEW] Include realized build time savings in all experiment summaries +- [NEW] Support `-x` command line option for Gradle experiment 1 From d514398cb6b71b3baea74c7b1489bb3c23b34e02 Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 15:17:18 -0600 Subject: [PATCH 09/10] Always print performance characteristics --- .../scripts/gradle/01-validate-incremental-building.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 5b3f3dec..e132dbaf 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -164,16 +164,14 @@ fetch_build_cache_metrics() { # Overrides info.sh#print_performance_metrics print_performance_metrics() { - if [[ "$build_scan_publishing_mode" == "on" ]]; then - print_performance_characteristics - fi + print_performance_characteristics } # Overrides info.sh#print_performance_characteristics print_performance_characteristics() { - print_performance_characteristics_header + print_performance_characteristics_header - print_realized_build_time_savings + print_realized_build_time_savings } print_quick_links() { From 127b270ec124928b14f5cb4b09fad838d87f2b13 Mon Sep 17 00:00:00 2001 From: Eric Haag Date: Wed, 28 Dec 2022 15:48:39 -0600 Subject: [PATCH 10/10] Use backticks consistently --- .../01-validate-incremental-building.sh | 31 ++----------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index e132dbaf..8c637ca1 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -299,39 +299,12 @@ EOF wait_for_enter } -explain_and_print_summary() { - read_build_scan_metadata - local text - IFS='' read -r -d '' text <