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 6749ab3..dbf6fd4 100644 --- a/src/runboat/k8s.py +++ b/src/runboat/k8s.py @@ -243,13 +243,13 @@ async def deploy(kubefiles_path: Path | None, deployment_vars: DeploymentVars) - ) -async def delete_resources(build_name: str) -> None: +async def delete_deployment_resources(build_name: str) -> None: await _kubectl( [ "-n", settings.build_namespace, "delete", - "all", + 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: