From 0e54444ab7c24a0700b63b64877b346af01a1fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sat, 13 Sep 2025 14:43:40 +0200 Subject: [PATCH 1/2] Revert "Delete all resources with the build label" 'all' is just a shortcut for some resource types. This reverts commit a4ece9dad7bc643661ca0a466ab73da2181b77a7. --- src/runboat/k8s.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/runboat/k8s.py b/src/runboat/k8s.py index 6749ab3..4c58b0c 100644 --- a/src/runboat/k8s.py +++ b/src/runboat/k8s.py @@ -244,12 +244,13 @@ async def deploy(kubefiles_path: Path | None, deployment_vars: DeploymentVars) - async def delete_resources(build_name: str) -> None: + # TODO delete all resources with runboat/build label await _kubectl( [ "-n", settings.build_namespace, "delete", - "all", + "configmap,deployment,ingress,job,secret,service,pvc", "-l", f"runboat/build={build_name}", "--wait=false", From 839816978d0dbc8d61d864e16c392e0c0257c8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Sat, 13 Sep 2025 15:01:36 +0200 Subject: [PATCH 2/2] Make the list of resources to delete configurable --- src/runboat/controller.py | 2 +- src/runboat/k8s.py | 5 ++--- src/runboat/models.py | 2 +- src/runboat/settings.py | 5 +++++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/runboat/controller.py b/src/runboat/controller.py index 2248fd4..959ade0 100644 --- a/src/runboat/controller.py +++ b/src/runboat/controller.py @@ -182,7 +182,7 @@ class Controller: f"but the corresponding deployment {build_name} is gone. " f"Deleting all build resources." ) - await k8s.delete_resources(build_name) + await k8s.delete_deployment_resources(build_name) continue if job_kind == "initialize": if job.status.active: diff --git a/src/runboat/k8s.py b/src/runboat/k8s.py index 4c58b0c..dbf6fd4 100644 --- a/src/runboat/k8s.py +++ b/src/runboat/k8s.py @@ -243,14 +243,13 @@ async def deploy(kubefiles_path: Path | None, deployment_vars: DeploymentVars) - ) -async def delete_resources(build_name: str) -> None: - # TODO delete all resources with runboat/build label +async def delete_deployment_resources(build_name: str) -> None: await _kubectl( [ "-n", settings.build_namespace, "delete", - "configmap,deployment,ingress,job,secret,service,pvc", + settings.deployment_resource_types, "-l", f"runboat/build={build_name}", "--wait=false", diff --git a/src/runboat/models.py b/src/runboat/models.py index 62475ab..a767ccb 100644 --- a/src/runboat/models.py +++ b/src/runboat/models.py @@ -319,7 +319,7 @@ class Build(BaseModel): async def on_cleanup_succeeded(self) -> None: _logger.info(f"Cleanup job succeeded for {self}, deleting resources.") - await k8s.delete_resources(self.name) + await k8s.delete_deployment_resources(self.name) _logger.debug("Removing finalizer for %s.", self) await self._patch(remove_finalizers=True, not_found_ok=True) diff --git a/src/runboat/settings.py b/src/runboat/settings.py index 7a743b0..1c00f89 100644 --- a/src/runboat/settings.py +++ b/src/runboat/settings.py @@ -84,6 +84,11 @@ class Settings(BaseSettings): additional_footer_html: str = "" # Disable posting of statuses to GitHub commits disable_commit_statuses: bool = False + # Resources generated by the kubefiles templates in 'deployment' mode. These + # are used when undeploying a build to delete all resources. + deployment_resource_types: str = ( + "deployment,service,ingress,configmap,secret,pvc,job" + ) def get_build_settings(self, repo: str, target_branch: str) -> list[BuildSettings]: for repo_settings in self.repos: