From 9c6124d64524b7e781acc554c86a93830927aafd Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Tue, 6 Aug 2024 10:03:40 +0200 Subject: [PATCH] [IMP] runbot: faster docker update after change --- runbot/models/docker.py | 4 ++-- runbot/views/dockerfile_views.xml | 10 +++++++--- runbot_builder/builder.py | 7 ++++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/runbot/models/docker.py b/runbot/models/docker.py index 1995dc17..0c5a7417 100644 --- a/runbot/models/docker.py +++ b/runbot/models/docker.py @@ -21,7 +21,7 @@ class DockerLayer(models.Model): _name = 'runbot.docker_layer' _inherit = 'mail.thread' _description = "Docker layer" - _order = 'sequence, id' + _order = 'sequence,id' name = fields.Char("Name", required=True) sequence = fields.Integer("Sequence", default=100, tracking=True) @@ -41,7 +41,7 @@ class DockerLayer(models.Model): referencing_dockerlayer_ids = fields.One2many('runbot.docker_layer', 'reference_docker_layer_id', string='Layers referencing this one direcly', readonly=True) all_referencing_dockerlayer_ids = fields.One2many('runbot.docker_layer', compute="_compute_references", string='Layers referencing this one', readonly=True) reference_count = fields.Integer('Number of references', compute='_compute_references') - has_xml_id = fields.Boolean(compute='_compute_has_xml_id', store=True) + has_xml_id = fields.Boolean(compute='_compute_has_xml_id') @api.depends('referencing_dockerlayer_ids', 'dockerfile_id.referencing_dockerlayer_ids') def _compute_references(self): diff --git a/runbot/views/dockerfile_views.xml b/runbot/views/dockerfile_views.xml index fb86e9b3..07b0c4d8 100644 --- a/runbot/views/dockerfile_views.xml +++ b/runbot/views/dockerfile_views.xml @@ -21,12 +21,14 @@ - + - + + + @@ -148,9 +150,11 @@ + + - + diff --git a/runbot_builder/builder.py b/runbot_builder/builder.py index 40eeea21..6a0c4ccd 100755 --- a/runbot_builder/builder.py +++ b/runbot_builder/builder.py @@ -20,13 +20,18 @@ class BuilderClient(RunbotClient): for repo in self.env['runbot.repo'].search([('mode', '!=', 'disabled')]): repo._update(force=True) + self.last_docker_update = None + def loop_turn(self): + last_docker_update = max(self.env['runbot.dockerfile'].search([('to_build', '=', True)]).mapped('write_date')) + if self.count == 1 or self.last_docker_update != last_docker_update: + self.host._docker_build() + self.last_docker_update = last_docker_update if self.count == 1: # cleanup at second iteration self.env['runbot.runbot']._source_cleanup() self.env['runbot.build']._local_cleanup() self.env['runbot.runbot']._docker_cleanup() self.host._set_psql_conn_count() - self.host._docker_build() self.env['runbot.repo']._update_git_config() self.env.cr.commit() self.git_gc()