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:
@@ -635,6 +635,7 @@ fi
|
|||||||
}
|
}
|
||||||
|
|
||||||
verify_release_cas() {
|
verify_release_cas() {
|
||||||
|
local verify_capacity=${1:-true}
|
||||||
cluster_ssh "$CLUSTER_NINGBO_HOST" "$remote_release_helper status" >"$current_manifest"
|
cluster_ssh "$CLUSTER_NINGBO_HOST" "$remote_release_helper status" >"$current_manifest"
|
||||||
node "$cluster_root/scripts/release-manifest.mjs" validate "$current_manifest" >/dev/null
|
node "$cluster_root/scripts/release-manifest.mjs" validate "$current_manifest" >/dev/null
|
||||||
local current_sha current_api
|
local current_sha current_api
|
||||||
@@ -648,6 +649,7 @@ verify_release_cas() {
|
|||||||
[[ $(remote_kubectl get deployment "$deployment" -n "$namespace" \
|
[[ $(remote_kubectl get deployment "$deployment" -n "$namespace" \
|
||||||
-o 'jsonpath={.spec.template.spec.containers[0].image}') == "$api_image" ]]
|
-o 'jsonpath={.spec.template.spec.containers[0].image}') == "$api_image" ]]
|
||||||
done
|
done
|
||||||
|
[[ $verify_capacity == true ]] || return 0
|
||||||
[[ $(remote_kubectl get deployment easyai-worker-ningbo -n "$namespace" \
|
[[ $(remote_kubectl get deployment easyai-worker-ningbo -n "$namespace" \
|
||||||
-o 'jsonpath={.spec.replicas}') == "$AI_GATEWAY_ACCEPTANCE_BASE_REPLICAS_NINGBO" ]]
|
-o 'jsonpath={.spec.replicas}') == "$AI_GATEWAY_ACCEPTANCE_BASE_REPLICAS_NINGBO" ]]
|
||||||
[[ $(remote_kubectl get deployment easyai-worker-hongkong -n "$namespace" \
|
[[ $(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 ]]
|
[[ $(jq -r '.promotion.ready' "$report_root/acceptance-report.json") == true ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_release_cas
|
verify_release_cas false
|
||||||
bootstrap_acceptance_primary_identity
|
bootstrap_acceptance_primary_identity
|
||||||
ensure_acceptance_user_group
|
ensure_acceptance_user_group
|
||||||
ensure_acceptance_identity_shards
|
ensure_acceptance_identity_shards
|
||||||
@@ -3394,6 +3396,19 @@ ensure_acceptance_model_access
|
|||||||
create_and_activate_run
|
create_and_activate_run
|
||||||
wait_for_existing_tasks_to_drain
|
wait_for_existing_tasks_to_drain
|
||||||
snapshot_pre_acceptance_capacity
|
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
|
if ! verify_resource_preconditions; then
|
||||||
failure_gate_id=resource_preconditions
|
failure_gate_id=resource_preconditions
|
||||||
failure_reason='production resource preconditions failed'
|
failure_reason='production resource preconditions failed'
|
||||||
|
|||||||
Reference in New Issue
Block a user