Skip to content

Commit b60e6d6

Browse files
authored
Merge pull request #263 from gradle/erichaagdev/always-read-project-name-from-build-scan
Always read project name from Build Scan data
2 parents da175ff + 02deaaa commit b60e6d6

12 files changed

+40
-124
lines changed

components/capture-build-scan-url-maven-extension/src/main/java/com/gradle/CaptureBuildScansListener.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.gradle.maven.extension.api.GradleEnterpriseListener;
55
import com.gradle.maven.extension.api.scan.BuildScanApi;
66
import org.apache.maven.execution.MavenSession;
7-
import org.apache.maven.project.MavenProject;
87
import org.codehaus.plexus.logging.Logger;
98

109
import javax.inject.Inject;
@@ -20,12 +19,10 @@
2019
public class CaptureBuildScansListener implements GradleEnterpriseListener {
2120
private static final String EXPERIMENT_DIR = System.getProperty("com.gradle.enterprise.build_validation.experimentDir");
2221

23-
private final RootProjectExtractor rootProjectExtractor;
2422
private final Logger logger;
2523

2624
@Inject
27-
public CaptureBuildScansListener(RootProjectExtractor rootProjectExtractor, Logger logger) {
28-
this.rootProjectExtractor = rootProjectExtractor;
25+
public CaptureBuildScansListener(Logger logger) {
2926
this.logger = logger;
3027
}
3128

@@ -36,7 +33,7 @@ public void configure(GradleEnterpriseApi api, MavenSession session) throws Exce
3633
BuildScanApi buildScan = api.getBuildScan();
3734

3835
addCustomDataOnBuildFinished(buildScan);
39-
capturePublishedBuildScan(buildScan, rootProjectExtractor.extractRootProject(session));
36+
capturePublishedBuildScan(buildScan);
4037
}
4138

4239
private static void addCustomDataOnBuildFinished(BuildScanApi buildScan) {
@@ -71,7 +68,7 @@ private static String urlEncode(String str) {
7168
}
7269
}
7370

74-
private void capturePublishedBuildScan(BuildScanApi buildScan, MavenProject rootProject) {
71+
private void capturePublishedBuildScan(BuildScanApi buildScan) {
7572
buildScan.buildScanPublished(scan -> {
7673
logger.debug("Saving build scan data to build-scans.csv");
7774
String port = scan.getBuildScanUri().getPort() != -1 ? ":" + scan.getBuildScanUri().getPort() : "";
@@ -80,7 +77,7 @@ private void capturePublishedBuildScan(BuildScanApi buildScan, MavenProject root
8077
try (FileWriter fw = new FileWriter(EXPERIMENT_DIR + "/build-scans.csv", true);
8178
BufferedWriter bw = new BufferedWriter(fw);
8279
PrintWriter out = new PrintWriter(bw)) {
83-
out.println(String.format("%s,%s,%s,%s", rootProject.getName(), baseUrl, scan.getBuildScanUri(), scan.getBuildScanId()));
80+
out.println(String.format("%s,%s,%s", baseUrl, scan.getBuildScanUri(), scan.getBuildScanId()));
8481
} catch (IOException e) {
8582
logger.error("Unable to save scan data to build-scans.csv: " + e.getMessage(), e);
8683
throw new RuntimeException("Unable to save scan data to build-scans.csv: " + e.getMessage(), e);

components/capture-build-scan-url-maven-extension/src/main/java/com/gradle/RootProjectExtractor.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

components/scripts/gradle/01-validate-incremental-building.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,7 @@ print_gradle_command() {
155155

156156
fetch_build_cache_metrics() {
157157
if [ "$build_scan_publishing_mode" == "on" ]; then
158-
read_build_scan_metadata
159-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
158+
process_build_scan_data_online
160159
else
161160
find_and_read_build_scan_dumps
162161
fi
@@ -300,7 +299,6 @@ EOF
300299
}
301300

302301
explain_and_print_summary() {
303-
read_build_scan_metadata
304302
local text
305303
if [[ "${build_scan_publishing_mode}" == "on" ]]; then
306304
IFS='' read -r -d '' text <<EOF

components/scripts/gradle/02-validate-local-build-caching-same-location.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ print_gradle_command() {
158158

159159
fetch_build_cache_metrics() {
160160
if [ "$build_scan_publishing_mode" == "on" ]; then
161-
read_build_scan_metadata
162-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
161+
process_build_scan_data_online
163162
else
164163
find_and_read_build_scan_dumps
165164
fi
@@ -304,7 +303,6 @@ EOF
304303
}
305304

306305
explain_and_print_summary() {
307-
read_build_scan_metadata
308306
local text
309307
if [[ "${build_scan_publishing_mode}" == "on" ]]; then
310308
IFS='' read -r -d '' text <<EOF

components/scripts/gradle/03-validate-local-build-caching-different-locations.sh

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,7 @@ print_gradle_command() {
163163

164164
fetch_build_cache_metrics() {
165165
if [ "$build_scan_publishing_mode" == "on" ]; then
166-
read_build_scan_metadata
167-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
166+
process_build_scan_data_online
168167
else
169168
find_and_read_build_scan_dumps
170169
fi
@@ -307,7 +306,6 @@ EOF
307306

308307
explain_measure_build_results() {
309308
local text
310-
311309
if [[ "${build_scan_publishing_mode}" == "on" ]]; then
312310
IFS='' read -r -d '' text <<EOF
313311
$(print_separator)
@@ -342,7 +340,6 @@ EOF
342340
}
343341

344342
explain_and_print_summary() {
345-
read_build_scan_metadata
346343
local text
347344

348345
if [[ "${build_scan_publishing_mode}" == "on" ]]; then

components/scripts/gradle/05-validate-remote-build-caching-ci-local.sh

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ execute() {
6767
execute_build
6868

6969
print_bl
70-
fetch_build_cache_metrics
70+
process_build_scan_data_online
7171

7272
print_bl
7373
print_summary
@@ -132,7 +132,7 @@ wizard_execute() {
132132
print_bl
133133
explain_measure_build_results
134134
print_bl
135-
fetch_build_cache_metrics
135+
process_build_scan_data_online
136136
print_bl
137137
explain_and_print_summary
138138
}
@@ -213,11 +213,6 @@ print_experiment_specific_summary_info() {
213213
summary_row "Custom value mapping file:" "${mapping_file:-<none>}"
214214
}
215215

216-
fetch_build_cache_metrics() {
217-
read_build_scan_metadata
218-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
219-
}
220-
221216
# Overrides info.sh#print_performance_metrics
222217
print_performance_metrics() {
223218
print_performance_characteristics
@@ -505,7 +500,6 @@ generate_command_to_repeat_experiment() {
505500
}
506501

507502
explain_and_print_summary() {
508-
read_build_scan_metadata
509503
local text
510504
IFS='' read -r -d '' text <<EOF
511505
The ‘Summary‘ section below captures the configuration of the experiment and the

components/scripts/gradle/gradle-init-scripts/capture-published-build-scan.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@ if (isTopLevelBuild) {
1212
if (!settings.pluginManager.hasPlugin("com.gradle.enterprise")) {
1313
throw new IllegalStateException("The com.gradle.enterprise plugin is missing from the project (see https://docs.gradle.com/enterprise/gradle-plugin/#gradle_6_x_and_later).")
1414
}
15-
registerCallbacks(settings.extensions["gradleEnterprise"], settings.rootProject.name)
15+
registerCallbacks(settings.extensions["gradleEnterprise"])
1616
}
1717
} else if (atLeastGradle5) {
1818
projectsEvaluated { gradle ->
1919
if (!gradle.rootProject.pluginManager.hasPlugin("com.gradle.build-scan")) {
2020
throw new IllegalStateException("The com.gradle.build-scan plugin is missing from the project (see https://docs.gradle.com/enterprise/gradle-plugin/#gradle_5_x).")
2121
}
22-
registerCallbacks(gradle.rootProject.extensions["gradleEnterprise"], gradle.rootProject.name)
22+
registerCallbacks(gradle.rootProject.extensions["gradleEnterprise"])
2323
}
2424
} else {
2525
throw new IllegalStateException("Build validation not supported for Gradle ${GradleVersion.current()}. Upgrade your project's build to Gradle 5 or newer.")
2626
}
2727
}
2828

29-
def registerCallbacks(gradleEnterprise, rootProjectName) {
29+
void registerCallbacks(gradleEnterprise) {
3030
gradleEnterprise.with {
3131
buildScan {
3232
def scanFile = new File(experimentDir, "build-scans.csv")
@@ -35,7 +35,7 @@ def registerCallbacks(gradleEnterprise, rootProjectName) {
3535
def buildScanId = buildScan.buildScanId
3636
def port = (buildScanUri.port != -1) ? ":" + buildScanUri.port : ""
3737
def baseUrl = "${buildScanUri.scheme}://${buildScanUri.host}${port}"
38-
scanFile.append("${rootProjectName},${baseUrl},${buildScanUri},${buildScanId}\n")
38+
scanFile.append("${baseUrl},${buildScanUri},${buildScanId}\n")
3939
}
4040
def errorFile = new File(experimentDir, "build-scan-publish-error.txt")
4141
onError { error ->

components/scripts/lib/build_scan.sh

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,33 @@
22

33
readonly FETCH_BUILD_SCAN_DATA_JAR="${LIB_DIR}/export-api-clients/fetch-build-scan-data-cmdline-tool-${SCRIPT_VERSION}-all.jar"
44

5+
# This is a helper function for the common pattern of reading Build Scan metadata
6+
# from the build-scans.csv file, then retrieving build metrics using the Gradle
7+
# Enterprise API.
8+
process_build_scan_data_online() {
9+
read_build_scan_metadata
10+
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
11+
}
12+
513
read_build_scan_metadata() {
614
# This isn't the most robust way to read a CSV,
715
# but we control the CSV so we don't have to worry about various CSV edge cases
816
if [ -f "${BUILD_SCAN_FILE}" ]; then
9-
while IFS=, read -r field_1 field_2 field_3 field_4; do
10-
project_names+=("$field_1")
11-
base_urls+=("$field_2")
12-
build_scan_urls+=("$field_3")
13-
build_scan_ids+=("$field_4")
14-
done < "${BUILD_SCAN_FILE}"
17+
local build_scan_metadata
18+
build_scan_metadata=$(< "${BUILD_SCAN_FILE}")
19+
20+
if [[ "$_arg_debug" == "on" ]]; then
21+
debug "Raw Build Scan metadata (build-scans.csv)"
22+
debug "---------------------------"
23+
debug "${build_scan_metadata}"
24+
debug ""
25+
fi
26+
27+
while IFS=, read -r field_1 field_2 field_3; do
28+
base_urls+=("$field_1")
29+
build_scan_urls+=("$field_2")
30+
build_scan_ids+=("$field_3")
31+
done <<< "${build_scan_metadata}"
1532
fi
1633
}
1734

components/scripts/lib/info.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ print_warnings() {
8989
}
9090

9191
print_summary() {
92-
#defined in build_scan.sh
93-
read_build_scan_metadata
9492
#defined in build_scan.sh
9593
detect_warnings_from_build_scans
9694

components/scripts/maven/01-validate-local-build-caching-same-location.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,7 @@ print_maven_command() {
159159

160160
fetch_build_cache_metrics() {
161161
if [ "$build_scan_publishing_mode" == "on" ]; then
162-
read_build_scan_metadata
163-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
162+
process_build_scan_data_online
164163
else
165164
find_and_read_build_scan_dumps
166165
fi
@@ -305,7 +304,6 @@ EOF
305304
}
306305

307306
explain_and_print_summary() {
308-
read_build_scan_metadata
309307
local text
310308
if [[ "${build_scan_publishing_mode}" == "on" ]]; then
311309
IFS='' read -r -d '' text <<EOF

components/scripts/maven/02-validate-local-build-caching-different-locations.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,7 @@ print_maven_command() {
163163

164164
fetch_build_cache_metrics() {
165165
if [ "$build_scan_publishing_mode" == "on" ]; then
166-
read_build_scan_metadata
167-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
166+
process_build_scan_data_online
168167
else
169168
find_and_read_build_scan_dumps
170169
fi
@@ -341,7 +340,6 @@ EOF
341340
}
342341

343342
explain_and_print_summary() {
344-
read_build_scan_metadata
345343
local text
346344
if [[ "${build_scan_publishing_mode}" == "on" ]]; then
347345
IFS='' read -r -d '' text <<EOF

components/scripts/maven/04-validate-remote-build-caching-ci-local.sh

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ execute() {
6565
execute_build
6666

6767
print_bl
68-
fetch_build_cache_metrics
68+
process_build_scan_data_online
6969

7070
print_bl
7171
print_summary
@@ -130,7 +130,7 @@ wizard_execute() {
130130
print_bl
131131
explain_measure_build_results
132132
print_bl
133-
fetch_build_cache_metrics
133+
process_build_scan_data_online
134134
print_bl
135135
explain_and_print_summary
136136
}
@@ -212,11 +212,6 @@ print_experiment_specific_summary_info() {
212212
summary_row "Custom value mapping file:" "${mapping_file:-<none>}"
213213
}
214214

215-
fetch_build_cache_metrics() {
216-
read_build_scan_metadata
217-
fetch_and_read_build_scan_data build_cache_metrics_only "${build_scan_urls[@]}"
218-
}
219-
220215
# Overrides info.sh#print_performance_metrics
221216
print_performance_metrics() {
222217
print_performance_characteristics
@@ -512,7 +507,6 @@ generate_command_to_repeat_experiment() {
512507
}
513508

514509
explain_and_print_summary() {
515-
read_build_scan_metadata
516510
local text
517511
IFS='' read -r -d '' text <<EOF
518512
The ‘Summary‘ section below captures the configuration of the experiment and the

0 commit comments

Comments
 (0)