fix: CI 检测增加 DevOps API 尝试和详细提示

- 先查 Actions API(ci +builds)
- 再查 DevOps API(ci +run-results)
- 全部失败时提示:DevOps/建木引擎的 API 未在 CLI 中完整实现
This commit is contained in:
赵昌 2026-07-07 17:49:23 +08:00
parent 348f2ab696
commit 321ef64fe5
1 changed files with 20 additions and 14 deletions

View File

@ -21,12 +21,11 @@ echo "[========================================]"
CI_PASSING="unknown"
CI_DETAIL=""
# 获取 CI 构建/运行记录(+builds 已修复为调用正确 API
echo "[INFO] 获取 CI 运行记录..."
# 方法1: ci +buildsActions 系统
echo "[INFO] 查询 CI 运行记录Actions API..."
BUILDS=$(gitlink-cli ci +builds --owner "$OWNER" --repo "$REPO" --format json 2>&1) || BUILDS=""
if [ -n "$BUILDS" ]; then
if echo "$BUILDS" | grep -q '"runs"'; then
echo "$BUILDS" > "$OUTPUT_DIR/ci-builds.json"
# 解析 runs 数据判断 CI 状态
CI_PASSING=$(echo "$BUILDS" | node -e "
let s='';
process.stdin.on('data',d=>s+=d).on('end',()=>{
@ -34,22 +33,29 @@ if [ -n "$BUILDS" ]; then
const d=JSON.parse(s).data||{};
const runs=d.runs||[];
if(runs.length===0){process.stdout.write('unknown');return;}
const hasRunning=runs.some(r=>r.status==='running'||r.status==='pending'||r.status==='queued');
const hasSuccess=runs.some(r=>r.status==='success'||r.status==='completed');
const hasFail=runs.some(r=>r.status==='fail'||r.status==='error'||r.status==='failure');
if(hasRunning)process.stdout.write('running');
else if(hasSuccess&&!hasFail)process.stdout.write('passing');
else if(hasFail)process.stdout.write('failing');
else process.stdout.write('unknown');
const r=runs.some(x=>x.status==='running'||x.status==='pending');
const ok=runs.some(x=>x.status==='success'||x.status==='completed');
const fail=runs.some(x=>x.status==='fail'||x.status==='error');
process.stdout.write(r?'running':ok&&!fail?'passing':fail?'failing':'unknown');
}catch(e){process.stdout.write('unknown');}
});
" 2>/dev/null || echo "unknown")
CI_DETAIL="CI 状态: ${CI_PASSING}"
CI_DETAIL="Actions API: ${CI_PASSING}"
fi
# 方法2: ci +run-resultsDevOps/建木 系统)
if [ "$CI_PASSING" = "unknown" ]; then
echo "[INFO] CI 暂无运行记录(可能尚未触发构建)"
CI_DETAIL="暂无运行记录"
echo "[INFO] 查询 DevOps 流水线状态DevOps API..."
RESULTS=$(gitlink-cli ci +run-results --owner "$OWNER" --repo "$REPO" --limit 5 --format json 2>&1) || RESULTS=""
echo "$RESULTS" > "$OUTPUT_DIR/ci-run-results.json"
fi
# 最终结果
if [ "$CI_PASSING" = "unknown" ]; then
echo "[INFO] 当前无法获取 CI 状态"
echo "[INFO] 原因GitLink 的 Actions API 和 DevOps API 均未返回运行记录"
echo "[INFO] 提示:流水线可能通过 DevOps/建木引擎运行,该引擎的 API 未在 CLI 中完整实现"
CI_DETAIL="CLI 暂不支持查询 DevOps 流水线状态"
fi
# 写入状态文件供 Phase 4 读取