0724ddfbf3
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
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 / Validate - Type Check (mypy) (push) Successful in 43s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 32s
CI/CD Pipeline / Frontend Lint (push) Successful in 49s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 1m4s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 2m30s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 1m54s
CI/CD Pipeline / Build Staging API Image (push) Successful in 13m48s
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
98 lines
2.5 KiB
Bash
98 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
||
#
|
||
# CI 健康度看板一键生成脚本
|
||
# - 从 Gitea Actions API 拉取数据
|
||
# - 生成 HTML 可视化看板
|
||
# - 输出文件路径
|
||
#
|
||
# 用法:
|
||
# bash scripts/ci/generate_ci_dashboard.sh [--days 7] [--output ci_dashboard.html]
|
||
#
|
||
# 环境变量:
|
||
# GITEA_TOKEN API Token(必需)
|
||
# GITEA_URL Gitea 地址(可选,默认 https://git.xiaoxiajianji.com)
|
||
# GITEA_REPO 仓库(可选,默认 xiaoxia/xiaoxia-saas)
|
||
#
|
||
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||
|
||
# 默认参数
|
||
DAYS=7
|
||
OUTPUT="ci_dashboard.html"
|
||
|
||
# 解析参数
|
||
while [[ $# -gt 0 ]]; do
|
||
case "$1" in
|
||
--days)
|
||
DAYS="$2"
|
||
shift 2
|
||
;;
|
||
--output|-o)
|
||
OUTPUT="$2"
|
||
shift 2
|
||
;;
|
||
--help|-h)
|
||
echo "用法: bash scripts/ci/generate_ci_dashboard.sh [--days 7] [--output ci_dashboard.html]"
|
||
echo ""
|
||
echo "选项:"
|
||
echo " --days N 统计最近 N 天 (默认 7)"
|
||
echo " --output PATH HTML 输出路径 (默认 ci_dashboard.html)"
|
||
echo " --help 显示帮助"
|
||
echo ""
|
||
echo "环境变量:"
|
||
echo " GITEA_TOKEN API Token(必需)"
|
||
echo " GITEA_URL Gitea 地址"
|
||
echo " GITEA_REPO 仓库"
|
||
exit 0
|
||
;;
|
||
*)
|
||
echo "未知参数: $1"
|
||
exit 1
|
||
;;
|
||
esac
|
||
done
|
||
|
||
# 检查 Python
|
||
if ! command -v python3 &> /dev/null; then
|
||
echo "[ERROR] 未找到 python3,请先安装 Python 3"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查 Token
|
||
if [[ -z "${GITEA_TOKEN:-}" ]]; then
|
||
echo "[ERROR] 请设置 GITEA_TOKEN 环境变量"
|
||
exit 1
|
||
fi
|
||
|
||
echo "========================================"
|
||
echo " CI 健康度看板生成器"
|
||
echo "========================================"
|
||
echo ""
|
||
echo "统计天数: ${DAYS} 天"
|
||
echo "输出文件: ${OUTPUT}"
|
||
echo ""
|
||
|
||
# 生成 HTML 看板
|
||
echo "[INFO] 正在拉取数据并生成看板..."
|
||
python3 "${SCRIPT_DIR}/ci_dashboard.py" \
|
||
--days "${DAYS}" \
|
||
--html \
|
||
--html-output "${OUTPUT}"
|
||
|
||
echo ""
|
||
echo "========================================"
|
||
echo " ✅ 看板生成完成!"
|
||
echo "========================================"
|
||
echo ""
|
||
echo "文件路径: $(realpath "${OUTPUT}")"
|
||
echo ""
|
||
|
||
# 如果在 macOS 上,尝试打开
|
||
if [[ "$(uname)" == "Darwin" ]]; then
|
||
echo "[INFO] 正在打开浏览器..."
|
||
open "${OUTPUT}"
|
||
fi
|