fix(acceptance): 排空后切换验收 Worker 拓扑

首次 CAS 只校验 release 与镜像,进入 validation 并排空既有任务后再快照并应用 P24 基线,随后执行副本放置与资源门禁。避免在 live 流量下从 1+1 竞态切换到 0+2,也解除验收前置副本与安全排空之间的循环依赖。\n\n验证:bash -n、ShellCheck、git diff --check。
This commit is contained in:
2026-08-01 11:45:32 +08:00
parent c9fbf6e6f6
commit fcc3dc3cb9
+16 -1
View File
@@ -635,6 +635,7 @@ fi
}
verify_release_cas() {
local verify_capacity=${1:-true}
cluster_ssh "$CLUSTER_NINGBO_HOST" "$remote_release_helper status" >"$current_manifest"
node "$cluster_root/scripts/release-manifest.mjs" validate "$current_manifest" >/dev/null
local current_sha current_api
@@ -648,6 +649,7 @@ verify_release_cas() {
[[ $(remote_kubectl get deployment "$deployment" -n "$namespace" \
-o 'jsonpath={.spec.template.spec.containers[0].image}') == "$api_image" ]]
done
[[ $verify_capacity == true ]] || return 0
[[ $(remote_kubectl get deployment easyai-worker-ningbo -n "$namespace" \
-o 'jsonpath={.spec.replicas}') == "$AI_GATEWAY_ACCEPTANCE_BASE_REPLICAS_NINGBO" ]]
[[ $(remote_kubectl get deployment easyai-worker-hongkong -n "$namespace" \
@@ -3384,7 +3386,7 @@ WHERE task.acceptance_run_id='$run_id'::uuid
[[ $(jq -r '.promotion.ready' "$report_root/acceptance-report.json") == true ]]
}
verify_release_cas
verify_release_cas false
bootstrap_acceptance_primary_identity
ensure_acceptance_user_group
ensure_acceptance_identity_shards
@@ -3394,6 +3396,19 @@ ensure_acceptance_model_access
create_and_activate_run
wait_for_existing_tasks_to_drain
snapshot_pre_acceptance_capacity
if ! apply_capacity_profile P24; then
failure_gate_id=baseline_capacity_apply
failure_reason='failed to apply the drained P24 baseline topology'
mark_run_failed "$failure_reason"
exit 1
fi
if ! wait_for_post_rollout_stability P24; then
failure_gate_id=baseline_control_plane_stability
failure_reason='P24 baseline topology did not stabilize after rollout'
mark_run_failed "$failure_reason"
exit 1
fi
verify_release_cas
if ! verify_resource_preconditions; then
failure_gate_id=resource_preconditions
failure_reason='production resource preconditions failed'