From 6421af05f97012de93b3e9a806104fe93c0a5bb0 Mon Sep 17 00:00:00 2001 From: OG T Date: Thu, 26 Mar 2026 19:53:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(cd):=20=E8=99=95=E7=90=86=20K8s=20selector?= =?UTF-8?q?=20immutability=20=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 問題: kustomize labels 配置變更導致 selector 不匹配 修復: 偵測到 "field is immutable" 錯誤時自動刪除重建 Deployment Co-Authored-By: Claude Opus 4.5 --- .github/workflows/cd.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index 7fc1b253..9c4d1d5d 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -281,7 +281,19 @@ jobs: echo "⏭️ 跳過 Web image 更新 (build skipped)" fi - kubectl apply -k . + # 2026-03-26: 處理 selector immutability 問題 + # 如果 apply 失敗 (通常是 selector 變更),先刪除再重建 + if ! kubectl apply -k . 2>&1 | tee /tmp/apply.log; then + if grep -q "field is immutable" /tmp/apply.log; then + echo "⚠️ 偵測到 selector 不可變錯誤,執行強制重建..." + kubectl delete deployment awoooi-api awoooi-web awoooi-worker -n awoooi-prod --ignore-not-found + sleep 5 + kubectl apply -k . + else + echo "❌ 部署失敗 (非 selector 問題)" + exit 1 + fi + fi # 2026-03-26: CoreDNS GitOps 同步 (ADR-026) - name: Sync CoreDNS Config