[IMP] runbot: propagate batch to reference builds decision

This commit is contained in:
Xavier-Do 2024-03-07 10:42:19 +01:00 committed by Christophe Monniez
parent 082ecaafe9
commit c9e14a86ca
3 changed files with 15 additions and 12 deletions

View File

@ -335,7 +335,8 @@ class Batch(models.Model):
'create_batch_id': self.id,
'used_custom_trigger': bool(trigger_custom),
}
params_value['builds_reference_ids'] = trigger._reference_builds(bundle)
params_value['builds_reference_ids'] = trigger._reference_builds(self)
params = self.env['runbot.build.params'].create(params_value)

View File

@ -789,9 +789,9 @@ class ConfigStep(models.Model):
return dict(cmd=cmd)
def _reference_builds(self, bundle, trigger):
def _reference_builds(self, batch, trigger):
upgrade_dumps_trigger_id = trigger.upgrade_dumps_trigger_id
refs_batches = self._reference_batches(bundle, trigger)
refs_batches = self._reference_batches(batch, trigger)
refs_builds = refs_batches.mapped('slot_ids').filtered(
lambda slot: slot.trigger_id == upgrade_dumps_trigger_id
).mapped('build_id')
@ -803,13 +803,14 @@ class ConfigStep(models.Model):
def _is_upgrade_step(self):
return self.job_type in ('configure_upgrade', 'configure_upgrade_complement')
def _reference_batches(self, bundle, trigger):
def _reference_batches(self, batch, trigger):
if self.job_type == 'configure_upgrade_complement':
return self._reference_batches_complement(bundle, trigger)
return self._reference_batches_complement(batch, trigger)
else:
return self._reference_batches_upgrade(bundle, trigger.upgrade_dumps_trigger_id.category_id.id)
return self._reference_batches_upgrade(batch, trigger.upgrade_dumps_trigger_id.category_id.id)
def _reference_batches_complement(self, bundle, trigger):
def _reference_batches_complement(self, batch, trigger):
bundle = batch.bundle_id
category_id = trigger.upgrade_dumps_trigger_id.category_id.id
version = bundle.version_id
next_versions = version.next_major_version_id | version.next_intermediate_version_ids # TODO filter on trigger version
@ -822,10 +823,11 @@ class ConfigStep(models.Model):
if bundle.version_id in upgrade_complement_step._get_upgrade_source_versions(next_version):
target_versions |= next_version
return target_versions.with_context(
category_id=category_id, project_id=bundle.project_id.id
category_id=category_id, project_id=bundle.project_id.id,
).mapped('base_bundle_id').filtered('to_upgrade').mapped('last_done_batch')
def _reference_batches_upgrade(self, bundle, category_id):
def _reference_batches_upgrade(self, batch, category_id):
bundle = batch.bundle_id
target_refs_bundles = self.env['runbot.bundle']
upgrade_domain = [('to_upgrade', '=', True), ('project_id', '=', bundle.project_id.id)]
if self.upgrade_to_version_ids:

View File

@ -86,12 +86,12 @@ class Trigger(models.Model):
raise UserError('Upgrade trigger should have a config with step of type Configure Upgrade')
return upgrade_step
def _reference_builds(self, bundle):
def _reference_builds(self, batch):
self.ensure_one()
if self.upgrade_step_id: # this is an upgrade trigger, add corresponding builds
custom_config = next((trigger_custom.config_id for trigger_custom in bundle.trigger_custom_ids if trigger_custom.trigger_id == self), False)
custom_config = next((trigger_custom.config_id for trigger_custom in batch.bundle_id.trigger_custom_ids if trigger_custom.trigger_id == self), False)
step = self._upgrade_step_from_config(custom_config) if custom_config else self.upgrade_step_id
refs_builds = step._reference_builds(bundle, self)
refs_builds = step._reference_builds(batch, self)
return [(4, b.id) for b in refs_builds]
return []