mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 13:25:47 +07:00
[CHG] *: move fw_policy from PR to batch
This commit is contained in:
parent
21b5dd439b
commit
9ddf017768
@ -38,8 +38,8 @@ from odoo.tools.misc import topological_sort, groupby, Reverse
|
|||||||
from odoo.tools.sql import reverse_order
|
from odoo.tools.sql import reverse_order
|
||||||
from odoo.tools.appdirs import user_cache_dir
|
from odoo.tools.appdirs import user_cache_dir
|
||||||
from odoo.addons.base.models.res_partner import Partner
|
from odoo.addons.base.models.res_partner import Partner
|
||||||
from odoo.addons.runbot_merge import git, utils
|
from odoo.addons.runbot_merge import git
|
||||||
from odoo.addons.runbot_merge.models.pull_requests import RPLUS, Branch
|
from odoo.addons.runbot_merge.models.pull_requests import Branch
|
||||||
from odoo.addons.runbot_merge.models.stagings_create import Message
|
from odoo.addons.runbot_merge.models.stagings_create import Message
|
||||||
|
|
||||||
|
|
||||||
@ -258,12 +258,6 @@ class PullRequests(models.Model):
|
|||||||
token_field='fp_github_token',
|
token_field='fp_github_token',
|
||||||
format_args={'pr': parent, 'child': p},
|
format_args={'pr': parent, 'child': p},
|
||||||
)
|
)
|
||||||
# if we change the policy to skip CI, schedule followups on existing FPs
|
|
||||||
if vals.get('fw_policy') == 'skipci' and self.state == 'merged':
|
|
||||||
self.env['runbot_merge.pull_requests'].search([
|
|
||||||
('source_id', '=', self.id),
|
|
||||||
('state', 'not in', ('closed', 'merged')),
|
|
||||||
])._schedule_fp_followup()
|
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def _try_closing(self, by):
|
def _try_closing(self, by):
|
||||||
@ -396,7 +390,7 @@ class PullRequests(models.Model):
|
|||||||
if not pr.parent_id:
|
if not pr.parent_id:
|
||||||
_logger.info('-> no parent %s (%s)', pr.display_name, pr.parent_id)
|
_logger.info('-> no parent %s (%s)', pr.display_name, pr.parent_id)
|
||||||
continue
|
continue
|
||||||
if not self.env.context.get('force_fw') and self.source_id.fw_policy != 'skipci' and pr.state not in ['validated', 'ready']:
|
if not self.env.context.get('force_fw') and self.source_id.batch_id.fw_policy != 'skipci' and pr.state not in ['validated', 'ready']:
|
||||||
_logger.info('-> wrong state %s (%s)', pr.display_name, pr.state)
|
_logger.info('-> wrong state %s (%s)', pr.display_name, pr.state)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -424,7 +418,7 @@ class PullRequests(models.Model):
|
|||||||
# check if batch-mate are all valid
|
# check if batch-mate are all valid
|
||||||
mates = batch.prs
|
mates = batch.prs
|
||||||
# wait until all of them are validated or ready
|
# wait until all of them are validated or ready
|
||||||
if not self.env.context.get('force_fw') and any(pr.source_id.fw_policy != 'skipci' and pr.state not in ('validated', 'ready') for pr in mates):
|
if not self.env.context.get('force_fw') and any(pr.source_id.batch_id.fw_policy != 'skipci' and pr.state not in ('validated', 'ready') for pr in mates):
|
||||||
_logger.info("-> not ready (%s)", [(pr.display_name, pr.state) for pr in mates])
|
_logger.info("-> not ready (%s)", [(pr.display_name, pr.state) for pr in mates])
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -989,6 +983,16 @@ class Batch(models.Model):
|
|||||||
|
|
||||||
super().write(vals)
|
super().write(vals)
|
||||||
|
|
||||||
|
# if we change the policy to skip CI, schedule followups on existing FPs
|
||||||
|
# FIXME: although this should be managed by the command handler already,
|
||||||
|
# this should probably allow setting the fw policy on any batch
|
||||||
|
# of the sequence
|
||||||
|
if vals.get('fw_policy') == 'skipci' and self.merge_date:
|
||||||
|
self.env['runbot_merge.pull_requests'].search([
|
||||||
|
('source_id', '=', self.prs[:1].id),
|
||||||
|
('state', 'not in', ('closed', 'merged')),
|
||||||
|
])._schedule_fp_followup()
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# ordering is a bit unintuitive because the lowest sequence (and name)
|
# ordering is a bit unintuitive because the lowest sequence (and name)
|
||||||
|
@ -655,7 +655,7 @@ def test_skip_ci_all(env, config, make_repo):
|
|||||||
assert env['runbot_merge.pull_requests'].search([
|
assert env['runbot_merge.pull_requests'].search([
|
||||||
('repository.name', '=', prod.name),
|
('repository.name', '=', prod.name),
|
||||||
('number', '=', pr.number)
|
('number', '=', pr.number)
|
||||||
]).fw_policy == 'skipci'
|
]).batch_id.fw_policy == 'skipci'
|
||||||
|
|
||||||
with prod:
|
with prod:
|
||||||
prod.post_status('staging.a', 'success', 'legal/cla')
|
prod.post_status('staging.a', 'success', 'legal/cla')
|
||||||
@ -695,7 +695,7 @@ def test_skip_ci_next(env, config, make_repo):
|
|||||||
'hansen fw=skipci',
|
'hansen fw=skipci',
|
||||||
config['role_reviewer']['token']
|
config['role_reviewer']['token']
|
||||||
)
|
)
|
||||||
assert pr0_id.fw_policy == 'skipci'
|
assert pr0_id.batch_id.fw_policy == 'skipci'
|
||||||
env.run_crons()
|
env.run_crons()
|
||||||
|
|
||||||
_, _, pr2_id = env['runbot_merge.pull_requests'].search([], order='number')
|
_, _, pr2_id = env['runbot_merge.pull_requests'].search([], order='number')
|
||||||
|
@ -20,6 +20,11 @@ class Batch(models.Model):
|
|||||||
|
|
||||||
prs = fields.One2many('runbot_merge.pull_requests', 'batch_id')
|
prs = fields.One2many('runbot_merge.pull_requests', 'batch_id')
|
||||||
|
|
||||||
|
fw_policy = fields.Selection([
|
||||||
|
('default', "Default"),
|
||||||
|
('skipci', "Skip CI"),
|
||||||
|
], required=True, default="default", string="Forward Port Policy")
|
||||||
|
|
||||||
merge_date = fields.Datetime(tracking=True)
|
merge_date = fields.Datetime(tracking=True)
|
||||||
skipchecks = fields.Boolean(
|
skipchecks = fields.Boolean(
|
||||||
string="Skips Checks",
|
string="Skips Checks",
|
||||||
|
@ -798,7 +798,7 @@ class PullRequests(models.Model):
|
|||||||
feedback(close=True)
|
feedback(close=True)
|
||||||
case commands.FW():
|
case commands.FW():
|
||||||
if source_reviewer or is_reviewer:
|
if source_reviewer or is_reviewer:
|
||||||
(self.source_id or self).fw_policy = command.name.lower()
|
(self.source_id or self).batch_id.fw_policy = command.name.lower()
|
||||||
match command:
|
match command:
|
||||||
case commands.FW.DEFAULT:
|
case commands.FW.DEFAULT:
|
||||||
message = "Waiting for CI to create followup forward-ports."
|
message = "Waiting for CI to create followup forward-ports."
|
||||||
|
@ -159,7 +159,7 @@
|
|||||||
<field name="squash"/>
|
<field name="squash"/>
|
||||||
<field name="draft"/>
|
<field name="draft"/>
|
||||||
<field string="Up To" name="limit_id"/>
|
<field string="Up To" name="limit_id"/>
|
||||||
<field string="Forward-Port Policy" name="fw_policy"/>
|
<!-- <field string="Forward-Port Policy" name="fw_policy"/>-->
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<!-- influencers -->
|
<!-- influencers -->
|
||||||
|
Loading…
Reference in New Issue
Block a user