6eac0b2cf2
Worker Base Image Build / Build Worker Base Images (worker-base-builder-cache, infra/docker/worker-base-builder.Dockerfile, worker-base-builder, builder) (push) Failing after 1m54s
Worker Base Image Build / Build Worker Base Images (worker-base-runtime-cache, infra/docker/worker-base-runtime.Dockerfile, worker-base-runtime, runtime) (push) Failing after 1m36s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Validate - Code Quality (push) Failing after 1m29s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m4s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 1m2s
CI/CD Pipeline / Unit Tests (push) Successful in 3m38s
CI/CD Pipeline / Integration Tests (push) Successful in 2m0s
CI/CD Pipeline / Frontend Lint (push) Successful in 28s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 44s
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Build Staging API Image (push) Failing after 2m16s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 8m14s
CI/CD Pipeline / Build Staging Worker Image (push) Failing after 2m0s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (push) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (push) Has been skipped
同步内容: 1. CI流水线配置(ci-pipeline.yml)与develop对齐 2. PR构建脚本docker_build_only.sh增加buildx→docker build回退 3. pre-build步骤worker基础镜像构建增加buildx回退 4. 单元测试脚本全量覆盖率改为仅报告不阻塞 5. diff-cover依赖加入requirements-dev.txt 6. worker base builder/runtime Dockerfile同步 7. test_config_oss.py clear=False→clear=True修复OSS污染 8. Frontend Lint增加prettier依赖
78 lines
2.2 KiB
YAML
78 lines
2.2 KiB
YAML
name: CI Failure Monitor
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '0 */6 * * *' # 每6小时检查一次
|
|
workflow_dispatch:
|
|
inputs:
|
|
days:
|
|
description: '统计最近N天的失败'
|
|
required: false
|
|
default: '7'
|
|
fail_threshold:
|
|
description: '失败次数阈值'
|
|
required: false
|
|
default: '3'
|
|
fail_rate_threshold:
|
|
description: '失败率阈值(%)'
|
|
required: false
|
|
default: '30'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
monitor:
|
|
name: CI重复失败检测
|
|
runs-on: ci-l2
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
shell: sh
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
run: |
|
|
curl -sH "Authorization: token $GITHUB_TOKEN" \
|
|
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/raw/scripts/ci/step_checkout.sh?ref=${GITHUB_SHA}" \
|
|
| bash
|
|
|
|
- name: Record job start time
|
|
shell: sh
|
|
run: bash scripts/ci/step_timer_start.sh
|
|
|
|
- name: Run failure detection
|
|
shell: sh
|
|
env:
|
|
GITEA_API_TOKEN: ${{ secrets.REVIEW_GITEA_TOKEN }}
|
|
GITEA_URL: https://git.xiaoxiajianji.com
|
|
GITEA_REPO: xiaoxia/xiaoxia-saas
|
|
CI_NOTIFY_WEBHOOK: ${{ secrets.CI_NOTIFY_WEBHOOK }}
|
|
FAIL_CHECK_DAYS: ${{ inputs.days || 7 }}
|
|
FAIL_THRESHOLD: ${{ inputs.fail_threshold || 3 }}
|
|
FAIL_RATE_THRESHOLD: ${{ inputs.fail_rate_threshold || 30 }}
|
|
run: |
|
|
set +e
|
|
python3 scripts/ci/ci_repeated_failure_detector.py
|
|
EXIT_CODE=$?
|
|
echo "检测完成,退出码: $EXIT_CODE"
|
|
# 0=无异常, 1=有警告, 2=有严重问题
|
|
# 监控脚本永远不fail,避免告警风暴
|
|
exit 0
|
|
|
|
- name: Job duration summary
|
|
if: always()
|
|
shell: sh
|
|
run: bash scripts/ci/step_timer_end.sh
|
|
|
|
- name: Report CI trace
|
|
if: always()
|
|
shell: sh
|
|
env:
|
|
AGENTLOOP_LICENSE_KEY: ${{ secrets.AGENTLOOP_LICENSE_KEY }}
|
|
run: |
|
|
STATUS="ok"
|
|
[ ${{ job.status }} = "success" ] || STATUS="error"
|
|
START_TIME=""
|
|
[ -f /tmp/ci_job_start_time ] && START_TIME=$(cat /tmp/ci_job_start_time)
|
|
python3 scripts/ci/ci_trace_report.py --service xiaoxia-saas-ci --status $STATUS --start-time "$START_TIME" || true |