diff --git a/doozerlib/metadata.py b/doozerlib/metadata.py index 9632087e1..31607d5a1 100644 --- a/doozerlib/metadata.py +++ b/doozerlib/metadata.py @@ -268,6 +268,12 @@ def _default_brew_target(self): def candidate_brew_tags(self): return [self.candidate_brew_tag()] + def hotfix_brew_tags(self): + """ Returns "hotfix" Brew tags for this component. + "Hotfix" tags are used to prevent garbage collection. + """ + return [self.hotfix_brew_tag()] + def get_arches(self): """ :return: Returns the list of architecture this image/rpm should build for. This is an intersection diff --git a/doozerlib/rpm_builder.py b/doozerlib/rpm_builder.py index 1089cda6d..101823e0e 100644 --- a/doozerlib/rpm_builder.py +++ b/doozerlib/rpm_builder.py @@ -256,10 +256,11 @@ async def build(self, rpm: RPMMetadata, retries: int = 3): nvrs = [task.result[0]["nvr"] for task in multicall_tasks] if self._runtime.hotfix: # Tag rpms so they don't get garbage collected. - self._runtime.logger.info(f'Tagging build(s) {nvrs} with {rpm.hotfix_brew_tag()} to prevent garbage collection') + hotfix_tags = rpm.hotfix_brew_tags() + self._runtime.logger.info(f'Tagging build(s) {nvrs} info {hotfix_tags} to prevent garbage collection') with koji_api.multicall(strict=True) as m: - for nvr in nvrs: - m.tagBuild(rpm.hotfix_brew_tag(), nvr) + for nvr, hotfix_tag in zip(nvrs, hotfix_tags): + m.tagBuild(hotfix_tag, nvr) logger.info("Successfully built rpm: %s", rpm.rpm_name) rpm.build_status = True diff --git a/doozerlib/rpmcfg.py b/doozerlib/rpmcfg.py index e7f46d0c7..89ee9e923 100644 --- a/doozerlib/rpmcfg.py +++ b/doozerlib/rpmcfg.py @@ -233,6 +233,13 @@ def candidate_brew_tag(self): def candidate_brew_tags(self): return self.targets.copy() + def hotfix_brew_tags(self): + hotfix_tags = [] + for target in self.targets: + base_tag = target[:-len("-candidate")] if target.endswith("-candidate") else target + hotfix_tags.append(f"{base_tag}-hotfix") + return hotfix_tags + def _default_brew_target(self): """ Returns derived brew target name from the distgit branch name """