mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 13:25:47 +07:00
[IMP] runbot: manual host
This commit is contained in:
parent
45721cdf6c
commit
675e2f1688
@ -115,6 +115,9 @@ class Batch(models.Model):
|
|||||||
'build_type': 'normal' if self.category_id == self.env.ref('runbot.default_category') else 'scheduled',
|
'build_type': 'normal' if self.category_id == self.env.ref('runbot.default_category') else 'scheduled',
|
||||||
'no_auto_run': self.bundle_id.no_auto_run,
|
'no_auto_run': self.bundle_id.no_auto_run,
|
||||||
})
|
})
|
||||||
|
if self.bundle_id.host_id:
|
||||||
|
build.host = self.bundle_id.host_id.name
|
||||||
|
|
||||||
build._github_status(post_commit=False)
|
build._github_status(post_commit=False)
|
||||||
return link_type, build
|
return link_type, build
|
||||||
|
|
||||||
|
@ -45,6 +45,25 @@ class Bundle(models.Model):
|
|||||||
trigger_custom_ids = fields.One2many('runbot.bundle.trigger.custom', 'bundle_id')
|
trigger_custom_ids = fields.One2many('runbot.bundle.trigger.custom', 'bundle_id')
|
||||||
auto_rebase = fields.Boolean('Auto rebase', default=False)
|
auto_rebase = fields.Boolean('Auto rebase', default=False)
|
||||||
|
|
||||||
|
host_id = fields.Many2one('runbot.host', compute="_compute_host_id", store=True)
|
||||||
|
|
||||||
|
@api.depends('name')
|
||||||
|
def _compute_host_id(self):
|
||||||
|
assigned_only = None
|
||||||
|
runbots = {}
|
||||||
|
for bundle in self:
|
||||||
|
elems = bundle.name.split('-')
|
||||||
|
for elem in elems:
|
||||||
|
if elem.startswith('runbot'):
|
||||||
|
if elem.replace('runbot', '') == '_x':
|
||||||
|
if assigned_only is None:
|
||||||
|
assigned_only = self.env['runbot.host'].search([('assigned_only', '=', True)], limit=1)
|
||||||
|
bundle.host_id = assigned_only or False
|
||||||
|
elif elem.replace('runbot', '').isdigit():
|
||||||
|
if elem not in runbots:
|
||||||
|
runbots[elem] = self.env['runbot.host'].search([('name', 'like', '%s%%' % elem)], limit=1)
|
||||||
|
bundle.host_id = runbots[elem] or False
|
||||||
|
|
||||||
@api.depends('sticky')
|
@api.depends('sticky')
|
||||||
def _compute_make_stats(self):
|
def _compute_make_stats(self):
|
||||||
for bundle in self:
|
for bundle in self:
|
||||||
|
@ -169,6 +169,29 @@ class TestBranchIsBase(RunbotCaseMinimalSetup):
|
|||||||
self.assertTrue(branch.bundle_id.is_base, "A branch matching the is_base_regex parameter should create is_base bundle")
|
self.assertTrue(branch.bundle_id.is_base, "A branch matching the is_base_regex parameter should create is_base bundle")
|
||||||
self.assertTrue(branch.bundle_id.sticky, "A branch matching the is_base_regex parameter should create sticky bundle")
|
self.assertTrue(branch.bundle_id.sticky, "A branch matching the is_base_regex parameter should create sticky bundle")
|
||||||
|
|
||||||
|
def test_host(self):
|
||||||
|
r10 = self.env['runbot.host'].create({'name': 'runbot10.odoo.com'})
|
||||||
|
r12 = self.env['runbot.host'].create({'name': 'runbot12.odoo.com', 'assigned_only': True})
|
||||||
|
|
||||||
|
branch = self.Branch.create({
|
||||||
|
'remote_id': self.remote_server.id,
|
||||||
|
'name': 'saas-13.4-runbotinexist-test',
|
||||||
|
'is_pr': False,
|
||||||
|
})
|
||||||
|
self.assertFalse(branch.bundle_id.host_id)
|
||||||
|
branch = self.Branch.create({
|
||||||
|
'remote_id': self.remote_server.id,
|
||||||
|
'name': 'saas-13.4-runbot10-test',
|
||||||
|
'is_pr': False,
|
||||||
|
})
|
||||||
|
self.assertEqual(branch.bundle_id.host_id, r10)
|
||||||
|
branch = self.Branch.create({
|
||||||
|
'remote_id': self.remote_server.id,
|
||||||
|
'name': 'saas-13.4-runbot_x-test',
|
||||||
|
'is_pr': False,
|
||||||
|
})
|
||||||
|
self.assertEqual(branch.bundle_id.host_id, r12)
|
||||||
|
|
||||||
@mute_logger("odoo.addons.runbot.models.branch")
|
@mute_logger("odoo.addons.runbot.models.branch")
|
||||||
def test_is_base_regex_on_dev_remote(self):
|
def test_is_base_regex_on_dev_remote(self):
|
||||||
"""Test that a branch matching the is_base regex on a secondary remote goes to the dummy bundles."""
|
"""Test that a branch matching the is_base regex on a secondary remote goes to the dummy bundles."""
|
||||||
|
Loading…
Reference in New Issue
Block a user