Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions master/custom/release_dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,18 +228,17 @@ def problems(self):
elif latest_build["results"] == buildbot.process.results.WARNINGS:
yield BuildWarning(latest_build)
elif latest_build["results"] == buildbot.process.results.FAILURE:
failing_streak = 0
first_failing_build = None
for build in self.iter_interesting_builds():
if build["results"] == buildbot.process.results.FAILURE:
first_failing_build = build
continue
elif build["results"] == buildbot.process.results.SUCCESS:
if latest_build != first_failing_build:
yield BuildFailure(latest_build, first_failing_build)
break
else:
yield BuildFailure(latest_build)
# Didn't find a successful build; end of the failing streak
# is unknown.
first_failing_build = None
yield BuildFailure(latest_build, first_failing_build)

if not self.connected_workers:
yield BuilderDisconnected(self)
Expand Down Expand Up @@ -304,7 +303,10 @@ def problems(self):
problems = []
for builder in self._root.builders:
if builder.branch == self:
problems.extend(builder.problems)
if builder.problems:
problems.extend(builder.problems)
else:
problems.append(NoProblem(builder))
return problems

@cached_property
Expand Down Expand Up @@ -619,8 +621,9 @@ def builder(self):
@cached_property
def affected_builds(self):
result = {"Latest build": self.latest_build}
if self.first_failing_build:
result["Breaking build"] = self.first_failing_build
first_failing = self.first_failing_build
if first_failing and first_failing != self.latest_build:
result["Breaking build"] = first_failing
return result


Expand Down Expand Up @@ -682,8 +685,11 @@ def get_severity_and_description(self):
return severity, description


@dataclass
class NoProblem(Problem):
"""Dummy problem"""
builder: 'Builder | None' = None

name = "Releasable"

description = "No problem detected"
Expand Down
5 changes: 4 additions & 1 deletion master/custom/templates/releasedashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,10 @@ <h5>
</div>
{% endif %}
<div class="build-dots">
{% for build in builder.builds[:70] %}
{% for build in builder.builds %}
{% if loop.index0 == (50 if builder.problems else 3) %}
⋯ {% break %}
{% endif %}
{{ build_dot(build) }}
{% endfor %}
</div>
Expand Down