From 04b5b82c2bbe16eaaa22ce780b33abc83d3332b6 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sat, 11 Jul 2026 17:31:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(ci):=20=E5=AE=8C=E5=96=84CI=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E4=BD=93=E7=B3=BB=20-=20=E5=85=A8job=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=91=8A=E8=AD=A6=20+=20develop=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 所有CI job失败均发送飞书卡片告警(含告警关键词) - Validate/Integration Tests/Frontend Lint/Deploy Staging全覆盖 - develop/main构建成功发送镜像已就绪通知 - 配置 CI_NOTIFY_WEBHOOK secret 即可启用 --- .gitea/workflows/ci-cd.yml | 186 ++++++++++++++++++++++++++++++++++++- 1 file changed, 184 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml index 1354e0050..f37437396 100755 --- a/.gitea/workflows/ci-cd.yml +++ b/.gitea/workflows/ci-cd.yml @@ -216,7 +216,7 @@ print(f'状态: {"PASS ✅" if line_rate >= 65 else "FAIL ❌"}') "header": { "title": { "tag": "plain_text", - "content": "❌ CI 构建失败" + "content": "⚠️ CI告警:构建失败" }, "status": "red" }, @@ -490,7 +490,7 @@ print(f'状态: {"PASS ✅" if line_rate >= 50 else "FAIL ❌"}') "header": { "title": { "tag": "plain_text", - "content": "🔴 CI 集成测试失败" + "content": "⚠️ CI告警:集成测试失败" }, "template": "red" }, @@ -627,6 +627,67 @@ EOF -w /workspace/apps/web \ docker.m.daocloud.io/library/node:20 \ sh -lc 'npx vitest run src/test' + + - name: Notify CI failure + if: failure() + shell: sh + run: | + set +e + echo "=== CI 失败通知 ===" + + FAILED_JOB="Frontend Lint" + BRANCH="${GITHUB_REF_NAME:-unknown}" + COMMIT="${GITHUB_SHA:0:8}" + ACTOR="${GITHUB_ACTOR:-unknown}" + RUN_ID="${GITHUB_RUN_ID:-unknown}" + REPO="${GITHUB_REPOSITORY:-unknown}" + RUN_URL="https://git.xiaoxiajianji.com/${REPO}/actions/runs/${RUN_ID}" + + PAYLOAD=$(cat < /dev/null 2>&1 && echo "通知已发送" || echo "通知发送失败" + else + echo "未配置 CI_NOTIFY_WEBHOOK,跳过通知" + fi + deploy-staging: name: Build & Push Staging (Watchtower auto-deploy) runs-on: saas @@ -759,6 +820,127 @@ EOF echo "Commit: ${GITHUB_SHA}" + - name: Notify deploy failure + if: failure() + shell: sh + run: | + set +e + echo "=== 部署失败通知 ===" + + FAILED_JOB="Build & Push Staging" + BRANCH="${GITHUB_REF_NAME:-unknown}" + COMMIT="${GITHUB_SHA:0:8}" + ACTOR="${GITHUB_ACTOR:-unknown}" + RUN_ID="${GITHUB_RUN_ID:-unknown}" + REPO="${GITHUB_REPOSITORY:-unknown}" + RUN_URL="https://git.xiaoxiajianji.com/${REPO}/actions/runs/${RUN_ID}" + + PAYLOAD=$(cat < /dev/null 2>&1 && echo "通知已发送" || echo "通知发送失败" + else + echo "未配置 CI_NOTIFY_WEBHOOK,跳过通知" + fi + + - name: Notify staging success (镜像已就绪) + if: success() && (github.ref_name == 'develop' || github.ref_name == 'main') + shell: sh + run: | + set +e + echo "=== Staging 部署成功通知 ===" + + BRANCH="${GITHUB_REF_NAME:-unknown}" + COMMIT="${GITHUB_SHA:0:8}" + ACTOR="${GITHUB_ACTOR:-unknown}" + RUN_ID="${GITHUB_RUN_ID:-unknown}" + REPO="${GITHUB_REPOSITORY:-unknown}" + RUN_URL="https://git.xiaoxiajianji.com/${REPO}/actions/runs/${RUN_ID}" + COMMIT_URL="https://git.xiaoxiajianji.com/${REPO}/commit/${GITHUB_SHA}" + + PAYLOAD=$(cat < /dev/null 2>&1 && echo "成功通知已发送" || echo "成功通知发送失败" + else + echo "未配置 CI_NOTIFY_WEBHOOK,跳过通知" + fi + + staging-e2e: name: Staging E2E Tests runs-on: saas