fix(cd): 序列建構修復 Runner _runner_file_commands 衝突
根因: 並行 Job 的 Set up job 階段會同時寫入 RUNNER_TEMP 解法: build-api needs build-web,確保序列執行 移除: Job-level concurrency groups (不再需要) 更新: ops/runner/README.md v1.0→v2.0 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
28
.github/workflows/cd.yaml
vendored
28
.github/workflows/cd.yaml
vendored
@@ -1,11 +1,11 @@
|
||||
# =============================================================================
|
||||
# AWOOOI CD Pipeline v2.0 (完整沿用 AIOPS 最佳實踐)
|
||||
# AWOOOI CD Pipeline v2.1 (序列建構修復 Runner 衝突)
|
||||
# =============================================================================
|
||||
# 優化項目:
|
||||
# 1. Pre-flight Check (10s Fail-Fast)
|
||||
# 2. Runner 標籤 [self-hosted, harbor, k8s]
|
||||
# 3. dorny/paths-filter 精確路徑偵測
|
||||
# 4. API + Web 並行建構
|
||||
# 4. Web → API 序列建構 (2026-03-29 修復 _runner_file_commands 衝突)
|
||||
# 5. timeout-minutes 防止卡死
|
||||
# 6. Telegram + OpenClaw 通知
|
||||
# 7. force_deploy 強制重建選項
|
||||
@@ -57,11 +57,6 @@ jobs:
|
||||
name: "Pre-flight Check"
|
||||
runs-on: [self-hosted, harbor, k8s]
|
||||
timeout-minutes: 1
|
||||
# 2026-03-29: Runner 全局 mutex,確保同一 Runner 不會並行執行任何 CD Job
|
||||
# 使用固定 group 名稱 (非 run_id),所有 CD Jobs 共用同一把鎖
|
||||
concurrency:
|
||||
group: runner-awoooi-cd-mutex
|
||||
cancel-in-progress: false
|
||||
steps:
|
||||
# =======================================================================
|
||||
# 2026-03-29: Runner _diag/pages 檔案衝突修復 (v3)
|
||||
@@ -135,9 +130,6 @@ jobs:
|
||||
runs-on: [self-hosted, harbor, k8s]
|
||||
needs: pre-flight-check
|
||||
timeout-minutes: 1
|
||||
concurrency:
|
||||
group: runner-awoooi-cd-mutex
|
||||
cancel-in-progress: false
|
||||
outputs:
|
||||
api: ${{ inputs.force_deploy == true && 'true' || steps.filter.outputs.api }}
|
||||
web: ${{ inputs.force_deploy == true && 'true' || steps.filter.outputs.web }}
|
||||
@@ -171,15 +163,15 @@ jobs:
|
||||
k3s-system:
|
||||
- 'k8s/k3s-system/**'
|
||||
|
||||
# ==================== 並行建構 API ====================
|
||||
# ==================== 序列建構 API (必須等 Web 完成) ====================
|
||||
# 2026-03-29 Claude Code: 改為序列執行,修復 Runner _runner_file_commands 衝突
|
||||
# 根因: 並行 Job 的 "Set up job" 階段會互相覆寫 RUNNER_TEMP 檔案
|
||||
# 參考: ops/runner/README.md
|
||||
build-api:
|
||||
name: "Build API"
|
||||
runs-on: [self-hosted, harbor, k8s]
|
||||
needs: detect-changes
|
||||
needs: [detect-changes, build-web]
|
||||
timeout-minutes: 20
|
||||
concurrency:
|
||||
group: runner-awoooi-cd-mutex
|
||||
cancel-in-progress: false
|
||||
if: |
|
||||
!inputs.skip_api && (
|
||||
needs.detect-changes.outputs.api == 'true' ||
|
||||
@@ -214,15 +206,13 @@ jobs:
|
||||
--file apps/api/Dockerfile .
|
||||
echo "✅ API: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-api:${{ steps.tag.outputs.tag }}"
|
||||
|
||||
# ==================== 並行建構 Web ====================
|
||||
# ==================== 建構 Web (先執行) ====================
|
||||
# 2026-03-29 Claude Code: API 依賴 Web 完成,確保序列執行
|
||||
build-web:
|
||||
name: "Build Web"
|
||||
runs-on: [self-hosted, harbor, k8s]
|
||||
needs: detect-changes
|
||||
timeout-minutes: 20
|
||||
concurrency:
|
||||
group: runner-awoooi-cd-mutex
|
||||
cancel-in-progress: false
|
||||
if: |
|
||||
!inputs.skip_web && (
|
||||
needs.detect-changes.outputs.web == 'true' ||
|
||||
|
||||
Reference in New Issue
Block a user