mirror of
https://github.com/snowy-yang/qqbotsdk.git
synced 2026-10-21 13:55:20 +00:00
fix: CI 锁定 python:3.13-slim 容器、走 archive 接口拉源码,每步结果上报 status
五轮实跑证据链:工作流多次 7~26s 即死而 probe(纯 curl)每次成功; 换成 gitea 本地 clone 依旧 8s 即死——默认镜像工具链不明是主因,git/ github 只是其中一环。收缩依赖面:container 固定 python:3.13-slim (保证 python3.13+pip,免去 uv 下载 CPython);源码经 Gitea archive 接口拉 tarball(curl 已被 probe 证明可用);pyright 的 node 缺失时 apt 兜底。日志匿名不可读,改为每个关键步骤把成败写进 commit status (远程可读),失败点从此可直接定位。 部署工作流同步换 archive 拉源码;deploy/secrets 探测两轮均报 MISSING,待仓库侧补配 secrets。
This commit is contained in:
1 parent
b3edd79674
commit
a09d1788cd
2 files changed
+50
-20
No files matched your search
+42
-16
@@ -10,24 +10,50 @@ jobs:
|
||||
lint:
|
||||
name: ruff + pyright
|
||||
runs-on: ubuntu-latest
|
||||
# 固定官方 python 镜像:保证 python3.13 + pip 在场(runner 默认镜像
|
||||
# 工具链不明,实测任务曾 7s 即死);runner 不支持 container 时回落
|
||||
# 宿主机 python,此时 uv 经下方镜像变量自行下载 CPython
|
||||
container: python:3.13-slim
|
||||
steps:
|
||||
# 不用 actions/checkout:runner 对 github 的连通性不稳定(probe.yml
|
||||
# 实测多次工作流死于 checkout 阶段),改从 Gitea 本体克隆
|
||||
- name: 检出代码
|
||||
run: git clone --depth=1 "${GITHUB_SERVER_URL:-https://gitea.4i.hk}/${GITHUB_REPOSITORY}.git" .
|
||||
|
||||
- name: 安装 uv
|
||||
run: pip install uv
|
||||
|
||||
- name: 同步依赖(含 dev 组)
|
||||
run: uv sync
|
||||
# 不用 actions/checkout、不用 git:runner 对 github 连通性不稳
|
||||
# (probe.yml 实测),改走 Gitea archive 接口拉源码 tarball;每步
|
||||
# 结果写进 commit status(日志匿名不可读,status 远程可读)
|
||||
- name: 拉源码、装依赖并执行检测
|
||||
env:
|
||||
# CPython 3.13 走 npmmirror 的 python-build-standalone 镜像,
|
||||
# 避开 github releases 的间歇性不通
|
||||
TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
UV_PYTHON_INSTALL_MIRROR: https://registry.npmmirror.com/-/binary/python-build-standalone
|
||||
run: |
|
||||
set -e
|
||||
SERVER="${GITHUB_SERVER_URL:-https://gitea.4i.hk}"
|
||||
note() {
|
||||
curl -s -m 10 -X POST \
|
||||
-H "Authorization: token $TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{\"state\":\"$3\",\"context\":\"ci/$1\",\"description\":\"$2\"}" \
|
||||
"$SERVER/api/v1/repos/$GITHUB_REPOSITORY/statuses/$GITHUB_SHA" \
|
||||
-o /dev/null
|
||||
}
|
||||
trap 'note error "步骤意外失败,详见 Actions 日志" failure' ERR
|
||||
|
||||
- name: ruff 静态检查
|
||||
run: uv run ruff check src tests examples
|
||||
curl -sL "$SERVER/api/v1/repos/$GITHUB_REPOSITORY/archive/$GITHUB_SHA.tar.gz" -o src.tgz \
|
||||
&& mkdir src && tar -xzf src.tgz -C src --strip-components=1 && cd src \
|
||||
|| { note fetch "archive 拉取失败" failure; exit 1; }
|
||||
note fetch ok success
|
||||
|
||||
- name: pyright 类型检查
|
||||
run: uv run pyright
|
||||
pip install uv >/dev/null 2>&1 \
|
||||
|| { note pip "pip 安装 uv 失败" failure; exit 1; }
|
||||
note pip ok success
|
||||
|
||||
uv sync >/dev/null 2>&1 \
|
||||
|| { note sync "uv sync 失败" failure; exit 1; }
|
||||
note sync ok success
|
||||
|
||||
uv run ruff check src tests examples \
|
||||
|| { note ruff "ruff check 未通过" failure; exit 1; }
|
||||
note ruff ok success
|
||||
|
||||
# pyright 需要 node:镜像里没有就装 Debian 的(保底 pyright 自带下载)
|
||||
command -v node >/dev/null 2>&1 || { apt-get update -qq && apt-get install -y -qq nodejs; } || true
|
||||
uv run pyright \
|
||||
|| { note pyright "pyright 未通过" failure; exit 1; }
|
||||
note pyright ok success
|
||||
@@ -19,10 +19,14 @@ jobs:
|
||||
name: Cloudflare Pages
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# 不用 actions/checkout(runner 对 github 连通性不稳,见 probe.yml),
|
||||
# 改从 Gitea 本体克隆
|
||||
- name: 检出代码
|
||||
run: git clone --depth=1 "${GITHUB_SERVER_URL:-https://gitea.4i.hk}/${GITHUB_REPOSITORY}.git" .
|
||||
# 不用 actions/checkout、不用 git(runner 对 github 连通性不稳,见
|
||||
# probe.yml):改走 Gitea archive 接口拉源码 tarball
|
||||
- name: 拉源码
|
||||
run: |
|
||||
SERVER="${GITHUB_SERVER_URL:-https://gitea.4i.hk}"
|
||||
curl -sL "$SERVER/api/v1/repos/$GITHUB_REPOSITORY/archive/$GITHUB_SHA.tar.gz" -o src.tgz \
|
||||
&& mkdir src && tar -xzf src.tgz -C src --strip-components=1 \
|
||||
&& mv src/* . && rm -rf src src.tgz
|
||||
|
||||
# 日志匿名不可读:把 secrets 在场情况写进 commit status 便于远程
|
||||
# 排查(只报 set/MISSING,不泄露值)
|
||||
|
||||
Reference in new issue
Block a user