Skip to content

Commit 0f290c3

Browse files
authored
Show all stable builders on the release status page; add Disconnected stable workers (#525)
1 parent 9cb1ff9 commit 0f290c3

File tree

3 files changed

+71
-36
lines changed

3 files changed

+71
-36
lines changed

master/custom/release_dashboard.py

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ def get_release_status_app(buildernames):
2222
def get_release_status():
2323
builders = release_status_app.buildbot_api.dataGet("/builders")
2424

25-
failed_builds_by_branch = {}
25+
failed_builds_by_branch_and_tier = {}
26+
disconnected_workers = {}
2627

2728
for builder in builders:
2829
if builder["name"] not in buildernames:
@@ -31,15 +32,24 @@ def get_release_status():
3132
if "stable" not in builder["tags"]:
3233
continue
3334

34-
branch = [tag for tag in builder["tags"] if "3." in tag]
35+
for worker in release_status_app.buildbot_api.dataGet(
36+
("builders", builder["builderid"], "workers"),
37+
):
38+
if not worker["connected_to"]:
39+
disconnected_workers[worker["name"]] = worker
40+
41+
branch = None
42+
tier = 'no tier'
43+
for tag in builder["tags"]:
44+
if "3." in tag:
45+
branch = tag
46+
if tag.startswith('tier-'):
47+
tier = tag
3548

3649
if not branch:
3750
continue
3851

39-
(branch,) = branch
40-
41-
if branch not in failed_builds_by_branch:
42-
failed_builds_by_branch[branch] = []
52+
failed_builds_by_tier = failed_builds_by_branch_and_tier.setdefault(branch, {})
4353

4454
endpoint = ("builders", builder["builderid"], "builds")
4555
last_build = release_status_app.buildbot_api.dataGet(
@@ -56,14 +66,29 @@ def get_release_status():
5666
if last_build["results"] != FAILED_BUILD_STATUS:
5767
continue
5868

59-
failed_builds_by_branch[branch].append((builder, last_build))
69+
failed_builds = failed_builds_by_tier.setdefault(tier, [])
70+
failed_builds.append((builder, last_build))
71+
72+
def tier_sort_key(item):
73+
tier, data = item
74+
if tier == 'no tier':
75+
return 'zzz' # sort last
76+
return tier
77+
failed_builders = []
78+
for branch, failed_builds_by_tier in failed_builds_by_branch_and_tier.items():
79+
failed_builders.append((
80+
branch,
81+
sorted(failed_builds_by_tier.items(), key=tier_sort_key)
82+
))
83+
failed_builders.sort(reverse=True)
6084

6185
generated_at = datetime.datetime.now(tz=datetime.timezone.utc)
62-
failed_builders = sorted(failed_builds_by_branch.items(), reverse=True)
86+
6387
return render_template(
6488
"releasedashboard.html",
6589
failed_builders=failed_builders,
6690
generated_at=generated_at,
91+
disconnected_workers=sorted(disconnected_workers.items()),
6792
)
6893

6994
@release_status_app.route("/index.html")

master/custom/templates/releasedashboard.html

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
<h1>Branch release status dashboard</h1>
66
</div>
77

8+
<h2>Failing stable builders</h2>
9+
810
<div class="container">
911
<div class="col-sm-12">
1012
<div class="row">
11-
{% for branch, info in failed_builders %}
13+
{% for branch, info_by_tier in failed_builders %}
1214
<div class="col-md-4 ng-scope">
13-
{% if not info %}
15+
{% if not info_by_tier %}
1416
<div class="panel panel-success">
1517
<div class="panel-heading">
1618
<div style="text-align: center;">
@@ -30,19 +32,22 @@ <h4 class="panel-title">
3032
<div class="panel-heading">
3133
<div style="text-align: center;">
3234
<h4 class="panel-title">
33-
Branch {{ branch }} status: Not Releaseable
35+
Branch {{ branch }} status:
3436
</h4>
3537
</div>
3638
</div>
3739
<div class="panel-body">
38-
{% for builder, build in info %}
39-
<!-- BROKEN? <div> <buildsummary buildid="{{build.buildid}}" condensed="1"/> </div> -->
40-
<div>
41-
<a class="badge-status badge results_{{build.results_text | upper}}"
42-
href="#/builders/{{build.builderid}}/builds/{{build.number}}">
43-
{{build.number}}
44-
</a>
45-
</div>
40+
{% for tier, info in info_by_tier %}
41+
<h5>{{ tier }}</h5>
42+
{% for builder, build in info %}
43+
<!-- BROKEN? <div> <buildsummary buildid="{{build.buildid}}" condensed="1"/> </div> -->
44+
<div>
45+
<a class="badge-status badge results_{{build.results_text | upper}}"
46+
href="#/builders/{{build.builderid}}/builds/{{build.number}}">
47+
{{ builder.name }}: #{{ build.number }}
48+
</a>
49+
</div>
50+
{% endfor %}
4651
{% endfor %}
4752
</div>
4853
</div>
@@ -52,6 +57,22 @@ <h4 class="panel-title">
5257
</div>
5358
</div>
5459
</div>
60+
61+
<h2>Disconnected stable workers</h2>
62+
63+
<div class="container">
64+
{% for name, worker in disconnected_workers %}
65+
<div class="row">
66+
-
67+
<a href="#/workers/{{ worker.workerid }}">
68+
{{ name }}
69+
</a>
70+
</div>
71+
{% else %}
72+
None.
73+
{% endfor %}
74+
</div>
75+
5576
<div class="container">
5677
<small>Generated at <time id="generatedAt" datetime="{{generated_at}}">{{generated_at}}</time></small>
5778
</div>

master/master.cfg

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -137,16 +137,6 @@ GIT_KWDS = {
137137
c["builders"] = []
138138
c["schedulers"] = []
139139

140-
# Match builder name (including the branch name) of builders that should never
141-
# emit any notification. Basically, notifications are disabled on workers
142-
# which were never green (tests always failed).
143-
NO_NOTIFICATION = (
144-
"Alpine Linux",
145-
"Cygwin",
146-
# UBSan always failed on 3.6, 3.7 and 3.x
147-
"AMD64 Clang UBSan 3.",
148-
)
149-
150140
parallel = {w.name: f"-j{w.parallel_tests}" for w in WORKERS if w.parallel_tests}
151141
extra_factory_args = {
152142
"ware-gentoo-x86": {
@@ -248,14 +238,13 @@ for branch_num, (git_url, branchname, git_branch) in enumerate(git_branches):
248238
refleakbuildernames.append(buildername)
249239
else:
250240
buildernames.append(buildername)
251-
if all(pattern not in buildername for pattern in NO_NOTIFICATION):
241+
# disable notifications for unstable builders
242+
# (all these lists are the same now, but we might need to
243+
# diverge gain later.)
244+
if stability == STABLE:
252245
mail_status_builders.append(buildername)
253-
# disable GitHub notifications for unstable builders
254-
if stability == STABLE:
255-
github_status_builders.append(buildername)
256-
# Only Tier-1 and Tier-2 builders can block a release
257-
if tier in (TIER_1, TIER_2):
258-
release_status_builders.append(buildername)
246+
github_status_builders.append(buildername)
247+
release_status_builders.append(buildername)
259248
c["builders"].append(
260249
util.BuilderConfig(
261250
name=buildername,

0 commit comments

Comments
 (0)