diff --git a/runbot/models/batch.py b/runbot/models/batch.py index 29717cb5..4e5f1d7e 100644 --- a/runbot/models/batch.py +++ b/runbot/models/batch.py @@ -286,6 +286,7 @@ class Batch(models.Model): 'commit_link_ids': [(6, 0, [commit_link_by_repos[repo.id].id for repo in trigger_repos])], 'modules': bundle.modules, 'dockerfile_id': dockerfile_id, + 'create_batch_id': self.id, } params_value['builds_reference_ids'] = trigger._reference_builds(bundle) diff --git a/runbot/models/build.py b/runbot/models/build.py index 429367f6..f3e2f68a 100644 --- a/runbot/models/build.py +++ b/runbot/models/build.py @@ -49,6 +49,7 @@ class BuildParameters(models.Model): version_id = fields.Many2one('runbot.version', required=True, index=True) project_id = fields.Many2one('runbot.project', required=True, index=True) # for access rights trigger_id = fields.Many2one('runbot.trigger', index=True) # for access rights + create_batch_id = fields.Many2one('runbot.batch') category = fields.Char('Category', index=True) # normal vs nightly vs weekly, ... dockerfile_id = fields.Many2one('runbot.dockerfile', index=True, default=lambda self: self.env.ref('runbot.docker_default', raise_if_not_found=False)) skip_requirements = fields.Boolean('Skip requirements.txt auto install') @@ -91,6 +92,8 @@ class BuildParameters(models.Model): 'dockerfile_id': param.dockerfile_id.id, 'skip_requirements': param.skip_requirements, } + if param.trigger_id.batch_dependent: + cleaned_vals['create_batch_id'] = param.create_batch_id.id, param.fingerprint = hashlib.sha256(str(cleaned_vals).encode('utf8')).hexdigest() @api.depends('commit_link_ids') diff --git a/runbot/models/repo.py b/runbot/models/repo.py index e0660abb..dad25628 100644 --- a/runbot/models/repo.py +++ b/runbot/models/repo.py @@ -43,6 +43,7 @@ class Trigger(models.Model): repo_ids = fields.Many2many('runbot.repo', relation='runbot_trigger_triggers', string="Triggers", domain="[('project_id', '=', project_id)]") dependency_ids = fields.Many2many('runbot.repo', relation='runbot_trigger_dependencies', string="Dependencies") config_id = fields.Many2one('runbot.build.config', string="Config", required=True) + batch_dependent = fields.Boolean('Batch Dependent', help="Force adding batch in build parameters to make it unique and give access to bundle") ci_context = fields.Char("Ci context", default='ci/runbot', tracking=True) category_id = fields.Many2one('runbot.category', default=lambda self: self.env.ref('runbot.default_category', raise_if_not_found=False)) diff --git a/runbot/views/build_views.xml b/runbot/views/build_views.xml index c2bf7528..76578c9c 100644 --- a/runbot/views/build_views.xml +++ b/runbot/views/build_views.xml @@ -16,6 +16,9 @@ <field name="match_type"/> </tree> </field> + <field name="trigger_id"/> + <field name="create_batch_id"/> + <field name="dockerfile_id"/> </group> </sheet> </form> diff --git a/runbot/views/repo_views.xml b/runbot/views/repo_views.xml index 2a41b090..98eba586 100644 --- a/runbot/views/repo_views.xml +++ b/runbot/views/repo_views.xml @@ -17,6 +17,7 @@ <field name="repo_ids"/> <field name="dependency_ids"/> <field name="config_id"/> + <field name="batch_dependent"/> <field name="version_domain" widget="domain" options="{'model': 'runbot.version', 'in_dialog': True}"/> <field name="hide"/> <field name="manual"/>