fix: CI 摆脱 github 依赖(uv 走 pip+tuna、CPython 走 npmmirror),新增网络探测

第二轮实跑:检测工作流 12s 即败于 setup-uv(它从 github.com 拉 uv
二进制),部署工作流却能存活 1 分钟以上——同用 checkout 而死法不
同,判断 checkout 可用、github 拉取是检测链路的堵点。为此:

- ci.yml 弃用 setup-uv:pip(tuna 索引)装 uv;uv sync 的 CPython
  下载指向 npmmirror 的 python-build-standalone 镜像,包索引走 tuna;
- 新增 probe.yml:把 runner 对 github/pypi/tuna/npm/npmmirror/CF API
  的连通性写进 commit status(匿名可读),补齐无法读日志时的观测。
This commit is contained in:
snowy-yang committed 2026-09-24 20:30:05 +08:00
1 parent 32bd7c13b5
commit 2916fc5902
2 files changed
+45 -5

No files matched your search

+9 -5
View File
@@ -14,14 +14,18 @@ jobs:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装 uv 与 Python 3.13
uses: astral-sh/setup-uv@v5
with:
python-version: "3.13"
# 不开 enable-cache:Gitea 的 Actions 缓存服务不完善,常导致任务末尾失败
# 不用 setup-uv:它要从 github.com 拉 uv 二进制与 CPython——runner
# 主机对 github 的连通性不可靠(见 probe.yml 探测)。改走 pip/tuna
# 装 uv,CPython 走 npmmirror 的 python-build-standalone 镜像,
# 包索引走 tuna。
- name: 安装 uv
run: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple uv
- name: 同步依赖(含 dev 组)
run: uv sync
env:
UV_DEFAULT_INDEX: https://pypi.tuna.tsinghua.edu.cn/simple
UV_PYTHON_INSTALL_MIRROR: https://registry.npmmirror.com/-/binary/python-build-standalone
- name: ruff 静态检查
run: uv run ruff check src tests examples
+36
View File
@@ -0,0 +1,36 @@
name: 网络探测
# 探测 runner 主机对各关键站点的出网连通性,结果写入 commit status
# (公开仓库匿名可读:GET /repos/{owner}/{repo}/commits/{sha}/status)。
# 改动本文件推送即触发。
on:
push:
paths: ['.gitea/workflows/probe.yml']
jobs:
probe:
name: runner 出网探测
runs-on: ubuntu-latest
steps:
- name: 探测连通性并写入 commit status
env:
TOKEN: ${{ secrets.GITEA_TOKEN }}
run: |
SERVER="${GITHUB_SERVER_URL:-https://gitea.4i.hk}"
post() {
curl -s -m 10 -X POST \
-H "Authorization: token $TOKEN" \
-H 'Content-Type: application/json' \
-d "{\"state\":\"success\",\"context\":\"probe/$1\",\"description\":\"$2\"}" \
"$SERVER/api/v1/repos/$GITHUB_REPOSITORY/statuses/$GITHUB_SHA" \
-o /dev/null -w "probe/$1 = $2 (HTTP %{http_code})\n"
}
code() { curl -s -m 8 -o /dev/null -w '%{http_code}' -L "$1"; }
post github "$(code https://github.com)" success
post uv-release "$(code https://github.com/astral-sh/uv/releases/latest)" success
post pypi "$(code https://pypi.org/simple/)" success
post tuna "$(code https://pypi.tuna.tsinghua.edu.cn/simple/)" success
post npm "$(code https://registry.npmjs.org)" success
post npmmirror "$(code https://registry.npmmirror.com)" success
post cf-api "$(code https://api.cloudflare.com/client/v4)" success