From 321ef64fe5a22cd02ff2cb4463303cdeb1b20bf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=98=8C?= <392871505@qq.com> Date: Tue, 7 Jul 2026 17:49:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20CI=20=E6=A3=80=E6=B5=8B=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=20DevOps=20API=20=E5=B0=9D=E8=AF=95=E5=92=8C=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 先查 Actions API(ci +builds) - 再查 DevOps API(ci +run-results) - 全部失败时提示:DevOps/建木引擎的 API 未在 CLI 中完整实现 --- .../scripts/03-ci-check.sh | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) 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 读取