Skip to content

Commit dba21bf

Browse files
committed
[wip]
1 parent b12a474 commit dba21bf

File tree

4 files changed

+31
-3
lines changed

4 files changed

+31
-3
lines changed

runbot/models/branch.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ class Branch(models.Model):
4242

4343
alive = fields.Boolean('Alive', default=True)
4444
draft = fields.Boolean('Draft', store=True)
45+
close_date = fields.Datetime('Close date')
46+
# merged_commit_id = fields.Many2one('runbot.commit', 'Merged commit', index=True) # TODO populate me
4547

4648
@api.depends('name', 'remote_id.short_name')
4749
def _compute_dname(self):
@@ -241,9 +243,11 @@ def _recompute_infos(self, payload=None):
241243
self._update_bundle_id()
242244
return
243245

244-
if was_alive and not self.alive and self.bundle_id.for_next_freeze:
245-
if not any(branch.alive and branch.is_pr for branch in self.bundle_id.branch_ids):
246-
self.bundle_id.for_next_freeze = False
246+
if was_alive and not self.alive:
247+
self.close_date = self.env.cr.now()
248+
if self.bundle_id.for_next_freeze:
249+
if not any(branch.alive and branch.is_pr for branch in self.bundle_id.branch_ids):
250+
self.bundle_id.for_next_freeze = False
247251

248252
if (not self.draft and was_draft) or (self.alive and not was_alive) or (self.target_branch_name != init_target_branch_name and self.alive):
249253
self.bundle_id._force()

runbot/models/build_error.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,16 @@ class BuildError(models.Model):
205205
fixing_pr_id = fields.Many2one('runbot.branch', 'Fixing PR', tracking=True, domain=[('is_pr', '=', True)])
206206
fixing_pr_alive = fields.Boolean('Fixing PR alive', related='fixing_pr_id.alive')
207207
fixing_pr_url = fields.Char('Fixing PR url', related='fixing_pr_id.branch_url')
208+
fixing_bundle_id = fields.Many2one('runbot.bundle', 'Fixing bundle', compute='_compute_fixing_bundle_id', store=True, tracking=True)
209+
fixing_bundle_url = fields.Char('Fixing bundle url', related='fixing_bundle_id.frontend_url')
210+
211+
fixing_date = fields.Datetime('Fixing date', related="fixing_pr_id.close_date", help="Date of the merge of the first pr")
212+
fixing_date_forwardports = fields.Datetime('Fixing date forwardports', help="Date of the merge of the last forwardport")
213+
fixing_pr_ids = fields.Many2many('runbot.branch')
214+
fixing_forwardport_date = fields.Datetime('Fixing forwardport date', help="Date when the PR was forwardported to the main branch")
215+
216+
breaking_bundle_id = fields.Many2one('runbot.bundle', 'Breaking bundle', tracking=True, help="Bundle that introduced the error")
217+
breaking_bundle_url = fields.Char('Breaking bundle url', related='fixing_bundle_id.frontend_url')
208218

209219
test_tags = fields.Char(string='Test tags', help="Comma separated list of test_tags to use to reproduce/remove this error", tracking=True)
210220
canonical_tags = fields.Char('Canonical tag', compute='_compute_canonical_tags', store=True)
@@ -244,6 +254,14 @@ def _inverse_tags_min_version_id(self):
244254
if records.tags_min_version_id:
245255
records.tags_min_version_excluded_id = next((version for version in all_versions if version.number < records.tags_min_version_id.number), False)
246256

257+
@api.depends('fixing_pr_id')
258+
def _compute_fixing_bundle_id(self):
259+
for record in self:
260+
record.fixing_bundle_id = False
261+
if record.fixing_pr_id:
262+
record.fixing_bundle_id = record.fixing_pr_id.bundle_id
263+
264+
247265
@api.depends('error_content_ids.canonical_tag')
248266
def _compute_canonical_tags(self):
249267
for record in self:

runbot/models/bundle.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,15 @@ class Bundle(models.Model):
5454
commit_limit = fields.Integer("Commit limit")
5555
file_limit = fields.Integer("File limit")
5656
disable_codeowner = fields.Boolean("Disable codeowners", tracking=True)
57+
frontend_url = fields.Char("Frontend URL", compute="_compute_frontend_url")
5758

5859
# extra_info
5960
for_next_freeze = fields.Boolean('Should be in next freeze')
6061

62+
def _compute_frontend_url(self):
63+
for bundle in self:
64+
bundle.frontend_url = f'/runbot/bundle/{bundle.id}'
65+
6166
@api.depends('name')
6267
def _compute_host_id(self):
6368
assigned_only = None

runbot/views/build_error_views.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
</group>
3535
<group>
3636
<group name="fixer_info" string="Fixing" col="2">
37+
<field name="breaking_bundle_id"/>
3738
<field name="responsible"/>
3839
<field name="customer"/>
3940
<field name="team_id"/>

0 commit comments

Comments
 (0)