[IMP] runbot: change trigger start logic

and add sequence on project
This commit is contained in:
Xavier-Do 2022-10-18 12:48:08 +02:00 committed by Christophe Monniez
parent 02eb8014a3
commit eaf8964701
4 changed files with 11 additions and 3 deletions

View File

@ -302,9 +302,8 @@ class Batch(models.Model):
self.warning('Missing commit for repo %s for trigger %s', (trigger_repos & missing_repos).mapped('name'), trigger.name)
continue
# in any case, search for an existing build
config = trigger_custom.config_id if trigger_custom else trigger.config_id
if not config:
continue
extra_params = trigger_custom.extra_params if trigger_custom else ''
config_data = trigger_custom.config_data if trigger_custom else {}
params_value = {
@ -326,7 +325,10 @@ class Batch(models.Model):
build = self.env['runbot.build']
link_type = 'created'
if ((trigger.repo_ids & bundle_repos) or bundle.build_all or bundle.sticky) and not trigger.manual: # only auto link build if bundle has a branch for this trigger
force_trigger = trigger_custom and trigger_custom.start_mode == 'force'
skip_trigger = (trigger_custom and trigger_custom.start_mode == 'disable') or trigger.manual
should_start = ((trigger.repo_ids & bundle_repos) or bundle.build_all or bundle.sticky)
if force_trigger or (should_start and not skip_trigger): # only auto link build if bundle has a branch for this trigger
link_type, build = self._create_build(params)
self.env['runbot.batch.slot'].create({
'batch_id': self.id,

View File

@ -8,6 +8,7 @@ class BundleTriggerCustomization(models.Model):
_description = 'Custom trigger'
trigger_id = fields.Many2one('runbot.trigger')
start_mode = fields.Selection([('disabled', 'Disabled'), ('auto', 'Auto'), ('force', 'Force')], required=True, default='auto')
bundle_id = fields.Many2one('runbot.bundle')
config_id = fields.Many2one('runbot.build.config')
extra_params = fields.Char("Custom parameters")

View File

@ -4,6 +4,7 @@ from odoo import models, fields
class Project(models.Model):
_name = 'runbot.project'
_description = 'Project'
_order = 'sequence, id'
name = fields.Char('Project name', required=True)
group_ids = fields.Many2many('res.groups', string='Required groups')
@ -11,6 +12,7 @@ class Project(models.Model):
trigger_ids = fields.One2many('runbot.trigger', 'project_id', string='Triggers')
dockerfile_id = fields.Many2one('runbot.dockerfile', index=True, help="Project Default Dockerfile")
repo_ids = fields.One2many('runbot.repo', 'project_id', string='Repos')
sequence = fields.Integer('Sequence')
class Category(models.Model):

View File

@ -11,6 +11,7 @@
<field name="dockerfile_id"/>
<field name="group_ids"/>
<field name="trigger_ids"/>
<field name="sequence"/>
</group>
</form>
</field>
@ -25,6 +26,7 @@
<field name="dockerfile_id"/>
<field name="group_ids"/>
<field name="trigger_ids"/>
<field name="sequence"/>
</tree>
</field>
</record>
@ -62,6 +64,7 @@
</field>
<field string="Trigger customisations" name="trigger_custom_ids">
<tree editable="bottom">
<field name="start_mode"/>
<field name="trigger_id" domain="[('project_id', '=', parent.project_id)]"/>
<field name="config_id"/>
<field name="extra_params"/>