mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 23:45:44 +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.appdirs import user_cache_dir
|
||||
from odoo.addons.base.models.res_partner import Partner
|
||||
from odoo.addons.runbot_merge import git, utils
|
||||
from odoo.addons.runbot_merge.models.pull_requests import RPLUS, Branch
|
||||
from odoo.addons.runbot_merge import git
|
||||
from odoo.addons.runbot_merge.models.pull_requests import Branch
|
||||
from odoo.addons.runbot_merge.models.stagings_create import Message
|
||||
|
||||
|
||||
@ -258,12 +258,6 @@ class PullRequests(models.Model):
|
||||
token_field='fp_github_token',
|
||||
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
|
||||
|
||||
def _try_closing(self, by):
|
||||
@ -396,7 +390,7 @@ class PullRequests(models.Model):
|
||||
if not pr.parent_id:
|
||||
_logger.info('-> no parent %s (%s)', pr.display_name, pr.parent_id)
|
||||
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)
|
||||
continue
|
||||
|
||||
@ -424,7 +418,7 @@ class PullRequests(models.Model):
|
||||
# check if batch-mate are all valid
|
||||
mates = batch.prs
|
||||
# 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])
|
||||
continue
|
||||
|
||||
@ -989,6 +983,16 @@ class Batch(models.Model):
|
||||
|
||||
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
|
||||
|
||||
# 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([
|
||||
('repository.name', '=', prod.name),
|
||||
('number', '=', pr.number)
|
||||
]).fw_policy == 'skipci'
|
||||
]).batch_id.fw_policy == 'skipci'
|
||||
|
||||
with prod:
|
||||
prod.post_status('staging.a', 'success', 'legal/cla')
|
||||
@ -695,7 +695,7 @@ def test_skip_ci_next(env, config, make_repo):
|
||||
'hansen fw=skipci',
|
||||
config['role_reviewer']['token']
|
||||
)
|
||||
assert pr0_id.fw_policy == 'skipci'
|
||||
assert pr0_id.batch_id.fw_policy == 'skipci'
|
||||
env.run_crons()
|
||||
|
||||
_, _, 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')
|
||||
|
||||
fw_policy = fields.Selection([
|
||||
('default', "Default"),
|
||||
('skipci', "Skip CI"),
|
||||
], required=True, default="default", string="Forward Port Policy")
|
||||
|
||||
merge_date = fields.Datetime(tracking=True)
|
||||
skipchecks = fields.Boolean(
|
||||
string="Skips Checks",
|
||||
|
@ -798,7 +798,7 @@ class PullRequests(models.Model):
|
||||
feedback(close=True)
|
||||
case commands.FW():
|
||||
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:
|
||||
case commands.FW.DEFAULT:
|
||||
message = "Waiting for CI to create followup forward-ports."
|
||||
|
@ -159,7 +159,7 @@
|
||||
<field name="squash"/>
|
||||
<field name="draft"/>
|
||||
<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>
|
||||
<!-- influencers -->
|
||||
|
Loading…
Reference in New Issue
Block a user