diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 3c275ed..6bbefb9 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -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 diff --git a/.gitea/workflows/probe.yml b/.gitea/workflows/probe.yml new file mode 100644 index 0000000..f20a761 --- /dev/null +++ b/.gitea/workflows/probe.yml @@ -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