From 89a0ff7e998afb6db151a792f112af03eee3cef9 Mon Sep 17 00:00:00 2001 From: wangbo Date: Sat, 1 Aug 2026 18:28:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(release):=20=E5=90=8C=E6=AD=A5=20API=20?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=20revision?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 生产发布滚动 API 时写入当前完整 release SHA,避免镜像 digest 已更新但运行 revision 仍指向上一版本。补充发布 helper 静态回归检查。\n\n验证:bash -n、ShellCheck、cluster release helper 测试通过。 --- deploy/kubernetes/easyai-ai-gateway-cluster-release | 3 ++- tests/release/cluster-release-helper-test.sh | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/deploy/kubernetes/easyai-ai-gateway-cluster-release b/deploy/kubernetes/easyai-ai-gateway-cluster-release index 22e82db..847bfd5 100755 --- a/deploy/kubernetes/easyai-ai-gateway-cluster-release +++ b/deploy/kubernetes/easyai-ai-gateway-cluster-release @@ -634,7 +634,8 @@ rollout_site() { "AI_GATEWAY_DATABASE_CRITICAL_MAX_CONNS=$AI_GATEWAY_DATABASE_CRITICAL_MAX_CONNS" \ "AI_GATEWAY_DATABASE_RIVER_MAX_CONNS=$AI_GATEWAY_API_DATABASE_RIVER_MAX_CONNS" \ "AI_GATEWAY_DATABASE_MIN_IDLE_CONNS=$AI_GATEWAY_DATABASE_MIN_IDLE_CONNS" \ - "AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS=$AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS" || return 1 + "AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS=$AI_GATEWAY_DATABASE_MAX_CONN_IDLE_SECONDS" \ + "AI_GATEWAY_REVISION=${ACTIVE_RELEASE_SHA:-}" || return 1 "${kubectl[@]}" set image "deployment/easyai-api-$site" -n "$NAMESPACE" \ "api=$api_image" || return 1 "${kubectl[@]}" rollout status "deployment/easyai-api-$site" \ diff --git a/tests/release/cluster-release-helper-test.sh b/tests/release/cluster-release-helper-test.sh index 6b81fb6..2aa216b 100755 --- a/tests/release/cluster-release-helper-test.sh +++ b/tests/release/cluster-release-helper-test.sh @@ -61,6 +61,8 @@ AI_GATEWAY_WORKER_TARGET_OUTSTANDING_PER_REPLICA=48 AI_GATEWAY_WORKER_CPU_REQUEST_MILLICORES=500 AI_GATEWAY_WORKER_MEMORY_REQUEST_MIB=512 +grep -Fq "\"AI_GATEWAY_REVISION=\${ACTIVE_RELEASE_SHA:-}\"" "$helper" + # activate_manifest invokes this function inside an && condition. A failed # rollout must still propagate instead of falling through to a stale Ready Pod. if rollout_worker_site hongkong 'registry.example.invalid/api@sha256:deadbeef' && true; then