Skip to content

Commit ee82164

Browse files
authored
Fix the dashboard (#609)
Always yield a BuildFailure for failing builders. BuildFailure now allows the latest & breaking build to be the same, and deduplicates in that case. Also, show builders without detected problems Only 3 builds are shown for these. Also, reduce the number of builds shown from 70 to 50. Add an ellipsis if some are hidden.
1 parent 123e57d commit ee82164

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

master/custom/release_dashboard.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,18 +228,17 @@ def problems(self):
228228
elif latest_build["results"] == buildbot.process.results.WARNINGS:
229229
yield BuildWarning(latest_build)
230230
elif latest_build["results"] == buildbot.process.results.FAILURE:
231-
failing_streak = 0
232231
first_failing_build = None
233232
for build in self.iter_interesting_builds():
234233
if build["results"] == buildbot.process.results.FAILURE:
235234
first_failing_build = build
236-
continue
237235
elif build["results"] == buildbot.process.results.SUCCESS:
238-
if latest_build != first_failing_build:
239-
yield BuildFailure(latest_build, first_failing_build)
240236
break
241237
else:
242-
yield BuildFailure(latest_build)
238+
# Didn't find a successful build; end of the failing streak
239+
# is unknown.
240+
first_failing_build = None
241+
yield BuildFailure(latest_build, first_failing_build)
243242

244243
if not self.connected_workers:
245244
yield BuilderDisconnected(self)
@@ -304,7 +303,10 @@ def problems(self):
304303
problems = []
305304
for builder in self._root.builders:
306305
if builder.branch == self:
307-
problems.extend(builder.problems)
306+
if builder.problems:
307+
problems.extend(builder.problems)
308+
else:
309+
problems.append(NoProblem(builder))
308310
return problems
309311

310312
@cached_property
@@ -619,8 +621,9 @@ def builder(self):
619621
@cached_property
620622
def affected_builds(self):
621623
result = {"Latest build": self.latest_build}
622-
if self.first_failing_build:
623-
result["Breaking build"] = self.first_failing_build
624+
first_failing = self.first_failing_build
625+
if first_failing and first_failing != self.latest_build:
626+
result["Breaking build"] = first_failing
624627
return result
625628

626629

@@ -682,8 +685,11 @@ def get_severity_and_description(self):
682685
return severity, description
683686

684687

688+
@dataclass
685689
class NoProblem(Problem):
686690
"""Dummy problem"""
691+
builder: 'Builder | None' = None
692+
687693
name = "Releasable"
688694

689695
description = "No problem detected"

master/custom/templates/releasedashboard.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,10 @@ <h5>
206206
</div>
207207
{% endif %}
208208
<div class="build-dots">
209-
{% for build in builder.builds[:70] %}
209+
{% for build in builder.builds %}
210+
{% if loop.index0 == (50 if builder.problems else 3) %}
211+
⋯ {% break %}
212+
{% endif %}
210213
{{ build_dot(build) }}
211214
{% endfor %}
212215
</div>

0 commit comments

Comments
 (0)