mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
[IMP] runbot: cross project trigger
Allow to create a trigger without project, that execute for every project. In this case the repos are all the repo of the project that where updated. This is mainly for psxrunbot. Also allows to create a trigger that cross category
This commit is contained in:
parent
a563fcf907
commit
1b3e79447b
@ -162,8 +162,9 @@ class Batch(models.Model):
|
||||
_logger.error('No dockerfile found !')
|
||||
|
||||
triggers = self.env['runbot.trigger'].search([ # could be optimised for multiple batches. Ormcached method?
|
||||
('project_id', '=', project.id),
|
||||
('category_id', '=', self.category_id.id)
|
||||
('category_id', 'in', [False, self.category_id.id]),
|
||||
('project_id', 'in', [project.id, False] if project.enable_base_triggers else [project.id]),
|
||||
('project_id', '=', False),
|
||||
]).filtered(
|
||||
lambda t: not t.version_domain or \
|
||||
self.bundle_id.version_id.filtered_domain(t.get_version_domain())
|
||||
@ -172,6 +173,8 @@ class Batch(models.Model):
|
||||
pushed_repo = self.commit_link_ids.mapped('commit_id.repo_id')
|
||||
dependency_repos = triggers.mapped('dependency_ids')
|
||||
all_repos = triggers.mapped('repo_ids') | dependency_repos
|
||||
if any(not trigger.project_id for trigger in triggers):
|
||||
all_repos |= project.repo_ids
|
||||
missing_repos = all_repos - pushed_repo
|
||||
|
||||
######################################
|
||||
@ -298,6 +301,8 @@ class Batch(models.Model):
|
||||
for trigger in triggers:
|
||||
trigger_custom = trigger_customs.get(trigger, self.env['runbot.bundle.trigger.custom'])
|
||||
trigger_repos = trigger.repo_ids | trigger.dependency_ids
|
||||
if not trigger.project_id:
|
||||
trigger_repos |= project.repo_ids
|
||||
if trigger_repos & missing_repos:
|
||||
self.warning('Missing commit for repo %s for trigger %s', (trigger_repos & missing_repos).mapped('name'), trigger.name)
|
||||
continue
|
||||
@ -306,7 +311,7 @@ class Batch(models.Model):
|
||||
extra_params = trigger_custom.extra_params or ''
|
||||
config_data = trigger_custom.config_data or {}
|
||||
params_value = {
|
||||
'version_id': version_id,
|
||||
'version_id': version_id,
|
||||
'extra_params': extra_params,
|
||||
'config_id': config.id,
|
||||
'project_id': project_id,
|
||||
|
@ -12,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')
|
||||
enable_base_triggers = fields.Boolean('Enable base triggers', default=True)
|
||||
sequence = fields.Integer('Sequence')
|
||||
|
||||
|
||||
|
@ -38,7 +38,7 @@ class Trigger(models.Model):
|
||||
sequence = fields.Integer('Sequence')
|
||||
name = fields.Char("Name")
|
||||
description = fields.Char("Description", help="Informative description")
|
||||
project_id = fields.Many2one('runbot.project', string="Project id", required=True) # main/security/runbot
|
||||
project_id = fields.Many2one('runbot.project', string="Project id", default=lambda self: self.env.ref('runbot.main_project'))
|
||||
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)
|
||||
|
@ -8,6 +8,7 @@
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="keep_sticky_running"/>
|
||||
<field name="enable_base_triggers"/>
|
||||
<field name="dockerfile_id"/>
|
||||
<field name="group_ids"/>
|
||||
<field name="trigger_ids"/>
|
||||
@ -23,6 +24,7 @@
|
||||
<tree string="Projects">
|
||||
<field name="name"/>
|
||||
<field name="keep_sticky_running"/>
|
||||
<field name="enable_base_triggers"/>
|
||||
<field name="dockerfile_id"/>
|
||||
<field name="group_ids"/>
|
||||
<field name="trigger_ids"/>
|
||||
|
Loading…
Reference in New Issue
Block a user