Skip to content

Commit d22edab

Browse files
committed
Sort build scans by job run
1 parent fbfe07a commit d22edab

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/main/java/org/hibernate/infra/bot/ExtractDevelocityBuildScans.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.function.Predicate;
1010
import java.util.stream.Collectors;
1111

12+
import com.gradle.develocity.model.BuildAttributesEnvironment;
1213
import jakarta.inject.Inject;
1314

1415
import org.hibernate.infra.bot.config.DeploymentConfig;
@@ -161,6 +162,7 @@ private boolean isJenkinsBuild(GHCheckRun checkRun) {
161162

162163
private DevelocityCIBuildScan toCIBuildScan(Build build) {
163164
URI buildScanURI = deploymentConfig.develocity().uri().resolve( "/s/" + build.getId() );
165+
BuildAttributesEnvironment environment;
164166
List<BuildAttributesValue> customValues;
165167
List<BuildAttributesLink> links;
166168
List<String> tags;
@@ -171,6 +173,7 @@ private DevelocityCIBuildScan toCIBuildScan(Build build) {
171173
var gradle = build.getModels().getGradleAttributes();
172174
if ( maven != null && maven.getModel() != null ) {
173175
var model = maven.getModel();
176+
environment = model.getEnvironment();
174177
tags = model.getTags();
175178
customValues = model.getValues();
176179
links = model.getLinks();
@@ -180,6 +183,7 @@ private DevelocityCIBuildScan toCIBuildScan(Build build) {
180183
}
181184
else if ( gradle != null && gradle.getModel() != null ) {
182185
var model = gradle.getModel();
186+
environment = model.getEnvironment();
183187
tags = model.getTags();
184188
customValues = model.getValues();
185189
links = model.getLinks();
@@ -191,6 +195,7 @@ else if ( gradle != null && gradle.getModel() != null ) {
191195
throw new IllegalStateException( "No Maven or Gradle model in build scan " + buildScanURI );
192196
}
193197
String provider = "";
198+
String hostname = environment.getPublicHostname();
194199
String jobOrWorkflow = "";
195200
String stage = "";
196201
for ( BuildAttributesValue customValue : customValues ) {
@@ -218,7 +223,7 @@ else if ( customValue.getName().equals( "CI stage" ) ) {
218223
.sorted()
219224
.toList();
220225
return new DevelocityCIBuildScan(
221-
provider,
226+
provider, hostname,
222227
jobOrWorkflow,
223228
jobOrWorkflowUri,
224229
stage,

src/main/java/org/hibernate/infra/bot/develocity/DevelocityCIBuildScan.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44
import java.util.Comparator;
55
import java.util.List;
66

7-
public record DevelocityCIBuildScan(String provider, String jobOrWorkflow, URI jobOrWorkflowUri, String stage,
7+
public record DevelocityCIBuildScan(String provider, String hostname,
8+
String jobOrWorkflow, URI jobOrWorkflowUri, String stage,
89
Long availableAt, List<String> tags, List<String> goals,
910
Status status, Status testStatus,
1011
URI buildScanUri, URI failuresUri, URI testsUri, URI logsUri) {
1112

1213
public static final Comparator<? super DevelocityCIBuildScan> COMPARATOR =
1314
Comparator.comparing( DevelocityCIBuildScan::provider )
1415
.thenComparing( DevelocityCIBuildScan::jobOrWorkflow )
15-
.thenComparing( DevelocityCIBuildScan::stage )
16+
// Ideally we'd sort by "job run ID", but we don't have that information.
17+
// Since each host only runs one job at any given time,
18+
// we approximate it by sorting by hostname then date.
19+
.thenComparing( DevelocityCIBuildScan::hostname )
1620
.thenComparing( DevelocityCIBuildScan::availableAt );
1721

1822
public enum Status {

src/test/java/org/hibernate/infra/bot/develocity/DevelocityReportFormatterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ void summary_tagsConfig() {
244244

245245
private DevelocityCIBuildScan buildScanStub(String provider, String jobOrWorkflow, String stage, List<String> tags,
246246
List<String> goals, DevelocityCIBuildScan.Status status, DevelocityCIBuildScan.Status testStatus) {
247-
return new DevelocityCIBuildScan( provider, jobOrWorkflow,
247+
return new DevelocityCIBuildScan( provider, "hostname does not matter (not rendered)", jobOrWorkflow,
248248
URI.create( "https://ci.hibernate.org/job/hibernate-search/job/PR-4125/4/" ),
249249
stage, 0L,
250250
tags, goals, status, testStatus,

0 commit comments

Comments
 (0)