[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, 'create_batch_id': self.id,
'used_custom_trigger': bool(trigger_custom), '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) params = self.env['runbot.build.params'].create(params_value)

View File

@ -789,9 +789,9 @@ class ConfigStep(models.Model):
return dict(cmd=cmd) 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 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( refs_builds = refs_batches.mapped('slot_ids').filtered(
lambda slot: slot.trigger_id == upgrade_dumps_trigger_id lambda slot: slot.trigger_id == upgrade_dumps_trigger_id
).mapped('build_id') ).mapped('build_id')
@ -803,13 +803,14 @@ class ConfigStep(models.Model):
def _is_upgrade_step(self): def _is_upgrade_step(self):
return self.job_type in ('configure_upgrade', 'configure_upgrade_complement') 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': if self.job_type == 'configure_upgrade_complement':
return self._reference_batches_complement(bundle, trigger) return self._reference_batches_complement(batch, trigger)
else: 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 category_id = trigger.upgrade_dumps_trigger_id.category_id.id
version = bundle.version_id version = bundle.version_id
next_versions = version.next_major_version_id | version.next_intermediate_version_ids # TODO filter on trigger version 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): if bundle.version_id in upgrade_complement_step._get_upgrade_source_versions(next_version):
target_versions |= next_version target_versions |= next_version
return target_versions.with_context( 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') ).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'] target_refs_bundles = self.env['runbot.bundle']
upgrade_domain = [('to_upgrade', '=', True), ('project_id', '=', bundle.project_id.id)] upgrade_domain = [('to_upgrade', '=', True), ('project_id', '=', bundle.project_id.id)]
if self.upgrade_to_version_ids: 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') raise UserError('Upgrade trigger should have a config with step of type Configure Upgrade')
return upgrade_step return upgrade_step
def _reference_builds(self, bundle): def _reference_builds(self, batch):
self.ensure_one() self.ensure_one()
if self.upgrade_step_id: # this is an upgrade trigger, add corresponding builds 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 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 [(4, b.id) for b in refs_builds]
return [] return []