From 1fe7aecefbb7405a57409c95c797a1922bcdd1fb Mon Sep 17 00:00:00 2001 From: Gasper Kojek Date: Tue, 11 Jun 2024 11:12:10 +0200 Subject: [PATCH] Added printing the stacktrace for every 'buildFinished' call --- .../gradle/CustomBuildScanEnhancements.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gradle/CustomBuildScanEnhancements.java b/src/main/java/com/gradle/CustomBuildScanEnhancements.java index 4827f14..3cf3351 100644 --- a/src/main/java/com/gradle/CustomBuildScanEnhancements.java +++ b/src/main/java/com/gradle/CustomBuildScanEnhancements.java @@ -171,7 +171,7 @@ private void execute() { Map params = new LinkedHashMap<>(); params.put("CI job", j); params.put("CI build number", b); - addSearchLink(buildScan, "CI pipeline", params); + addSearchLinkMultipleValues(buildScan, "CI pipeline", params); })); } @@ -474,17 +474,21 @@ private static void addCustomValueAndSearchLink(BuildScanApiAdapter buildScan, S // Set custom values immediately, but do not add custom links until 'buildFinished' since // creating customs links requires the server url to be fully configured buildScan.value(name, value); + System.out.println("Calling buildFinished for link " + name + " from:\n\t" + getStackTrace()); buildScan.buildFinished(result -> addSearchLink(buildScan, linkLabel, name, value)); } - private static void addSearchLink(BuildScanApiAdapter buildScan, String linkLabel, Map values) { + private static void addSearchLinkMultipleValues(BuildScanApiAdapter buildScan, String linkLabel, Map values) { // the parameters for a link querying multiple custom values look like: // search.names=name1,name2&search.values=value1,value2 // this reduction groups all names and all values together in order to properly generate the query values.entrySet().stream() .sorted(Map.Entry.comparingByKey()) // results in a deterministic order of link parameters .reduce((a, b) -> new AbstractMap.SimpleEntry<>(a.getKey() + "," + b.getKey(), a.getValue() + "," + b.getValue())) - .ifPresent(x -> buildScan.buildFinished(result -> addSearchLink(buildScan, linkLabel, x.getKey(), x.getValue()))); + .ifPresent(x -> { + System.out.println("Calling buildFinished for link " + linkLabel + ":" + x.getKey() + " from:" + getStackTrace()); + buildScan.buildFinished(result -> addSearchLink(buildScan, linkLabel, x.getKey(), x.getValue())); + }); } private static void addSearchLink(BuildScanApiAdapter buildScan, String linkLabel, String name, String value) { @@ -496,4 +500,12 @@ private static void addSearchLink(BuildScanApiAdapter buildScan, String linkLabe } } + private static String getStackTrace() { + return Arrays.stream(Thread.currentThread().getStackTrace()) + .skip(2) + .map(StackTraceElement::toString) + .reduce((a, b) -> a + "\n\t" + b) + .orElse(""); + } + } \ No newline at end of file