diff --git a/skills/gitlink-quality-gate/scripts/03-ci-check.sh b/skills/gitlink-quality-gate/scripts/03-ci-check.sh index 0ed4026..af917f1 100644 --- a/skills/gitlink-quality-gate/scripts/03-ci-check.sh +++ b/skills/gitlink-quality-gate/scripts/03-ci-check.sh @@ -21,12 +21,11 @@ echo "[========================================]" CI_PASSING="unknown" CI_DETAIL="" -# 获取 CI 构建/运行记录(+builds 已修复为调用正确 API) -echo "[INFO] 获取 CI 运行记录..." +# 方法1: ci +builds(Actions 系统) +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-results(DevOps/建木 系统) 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 读取