From 1529645ebb2e4cae02cade92a78c414ebcdbd3a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sun, 14 Sep 2025 11:09:02 +0200 Subject: [PATCH] Make cleanup job optional via a global setting --- src/runboat/models.py | 12 +++++++++--- src/runboat/settings.py | 3 +++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/runboat/models.py b/src/runboat/models.py index a767ccb..d3dfc82 100644 --- a/src/runboat/models.py +++ b/src/runboat/models.py @@ -259,8 +259,16 @@ class Build(BaseModel): job_kind=k8s.DeploymentMode.initialize, ) + async def _delete_deployment_resources(self) -> None: + await k8s.delete_deployment_resources(self.name) + _logger.debug("Removing finalizer for %s.", self) + await self._patch(remove_finalizers=True, not_found_ok=True) + async def cleanup(self) -> None: """Launch the cleanup job.""" + if settings.no_cleanup_job: + await self._delete_deployment_resources() + return # Kill the initialization job to reduce conflict with the cleanup job, such as # the database being created by the initialization after the cleanup job has # completed. @@ -319,9 +327,7 @@ class Build(BaseModel): async def on_cleanup_succeeded(self) -> None: _logger.info(f"Cleanup job succeeded for {self}, deleting resources.") - await k8s.delete_deployment_resources(self.name) - _logger.debug("Removing finalizer for %s.", self) - await self._patch(remove_finalizers=True, not_found_ok=True) + await self._delete_deployment_resources() async def on_cleanup_failed(self) -> None: _logger.error(f"Cleanup job failed for {self}, manual intervention required.") diff --git a/src/runboat/settings.py b/src/runboat/settings.py index 1c00f89..e915afc 100644 --- a/src/runboat/settings.py +++ b/src/runboat/settings.py @@ -89,6 +89,9 @@ class Settings(BaseSettings): deployment_resource_types: str = ( "deployment,service,ingress,configmap,secret,pvc,job" ) + # Set to true if there is no cleanup job, and merely deleting the resources + # is enough. + no_cleanup_job: bool = False def get_build_settings(self, repo: str, target_branch: str) -> list[BuildSettings]: for repo_settings in self.repos: