From 8a393d58b926b7758038567ba120b197899704cf Mon Sep 17 00:00:00 2001 From: convee Date: Sat, 5 Sep 2026 01:16:12 +0800 Subject: [PATCH] fix: wait for cold-start dependencies in quickstart --- scripts/quickstart-kubeadm.sh | 11 ++++++++++- tests/test_helm_package.py | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/quickstart-kubeadm.sh b/scripts/quickstart-kubeadm.sh index 222bb7a..a5bcce0 100755 --- a/scripts/quickstart-kubeadm.sh +++ b/scripts/quickstart-kubeadm.sh @@ -172,13 +172,22 @@ prove_site() { --set images.control.repository=site-control \ --set images.control.tag=quickstart \ --set-value monitoring.enabled=true + # A truly new node may need several minutes to pull the pinned database, + # registry, proxy, and Prometheus images. Do not spend the API rollout budget + # while its dependencies are still downloading. + for workload in \ + statefulset/sites-postgres \ + deployment/sites-registry \ + deployment/sites-prometheus; do + kube -n "$namespace" rollout status "$workload" --timeout=15m + done # The development tag intentionally stays stable. Helm therefore sees no Pod # template change on a warm rerun even though containerd now has a new image; # restart every control-image consumer so a successful rerun proves this checkout. kube -n "$namespace" rollout restart \ deployment/sites-api deployment/sites-operator deployment/sites-activator for deployment in sites-api sites-operator sites-activator; do - kube -n "$namespace" rollout status "deployment/$deployment" --timeout=5m + kube -n "$namespace" rollout status "deployment/$deployment" --timeout=10m done KUBECONFIG="$kubeconfig" SITES_KUBE_CONTEXT="$context" \ "$root/scripts/standalone.sh" smoke diff --git a/tests/test_helm_package.py b/tests/test_helm_package.py index dc3ae10..8daf42a 100644 --- a/tests/test_helm_package.py +++ b/tests/test_helm_package.py @@ -55,6 +55,12 @@ def test_makefile_exposes_the_complete_kubeadm_trial_lifecycle(self) -> None: self.assertIn('public URL body digest', script) self.assertIn('rollout restart', script) self.assertIn('deployment/sites-api deployment/sites-operator deployment/sites-activator', script) + dependency_wait = script.index('statefulset/sites-postgres') + restart = script.index('rollout restart') + self.assertLess(dependency_wait, restart) + self.assertIn('deployment/sites-registry', script[dependency_wait:restart]) + self.assertIn('deployment/sites-prometheus', script[dependency_wait:restart]) + self.assertIn('--timeout=15m', script[dependency_wait:restart]) def test_newcomer_docs_name_kubeadm_and_not_the_kind_tool(self) -> None: docs = "\n".join(