From 1a011656ec345d184f02a8398efd7f408f6be0ca Mon Sep 17 00:00:00 2001 From: chenxing Date: Tue, 20 Oct 2026 14:18:45 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20apk=20=E6=BA=90=E4=B8=8D=E5=8F=AF?= =?UTF-8?q?=E8=BE=BE=E6=97=B6=E6=8C=89=E5=8F=AF=E8=BE=BE=E6=80=A7=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=87=E6=8D=A2=E9=95=9C=E5=83=8F=EF=BC=88=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=B5=81=E6=B0=B4=E7=BA=BF=E5=8D=A1=E6=AD=BB=E5=9C=A8?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AD=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 现象:10-20 12:18 / 12:19 两轮构建都失败在第一步 apk add: fetch https://dl-cdn.alpinelinux.org/alpine/v3.20/main: Permission denied(每个源卡满 60s) ERROR: unable to select packages: curl (no such package) 后续 clone / 构建 / 打包 / 建档全部被 skip,代码根本没被编译到。 同一时刻本机访问该源是 200,说明是 runner 容器侧网络受限。 改法:装包前用 busybox wget 依次探测 dl-cdn / 阿里云 / 腾讯云 / 华为云, 取第一个可达源替换 /etc/apk/repositories 后再 apk add;四源全不可达则显式报错退出, 不再以 120 秒超时的形式掩盖真实原因。 --- .gitea/workflows/build.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index ae9cc9a..9afc3eb 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -19,7 +19,22 @@ jobs: options: --network infra-infra-net steps: - name: 安装 git / curl / zip(alpine) - run: apk add --no-cache git curl zip + run: | + set -e + # runner 容器偶发拉不到公网 apk 源(dl-cdn.alpinelinux.org 报 Permission denied 并卡满 60s×2), + # 这里先按可达性挑一个能通的镜像源再装包,避免整条流水线卡死在第一步、后续步骤全被 skip + chosen="" + for host in dl-cdn.alpinelinux.org mirrors.aliyun.com mirrors.cloud.tencent.com mirrors.huaweicloud.com; do + if wget -q -T 6 -O /dev/null "https://${host}/alpine/v3.20/main/x86_64/APKINDEX.tar.gz"; then + chosen="${host}" + break + fi + echo "apk 源不可达: ${host}" + done + if [ -z "${chosen}" ]; then echo "所有 apk 源均不可达,请检查 runner 容器网络/代理"; exit 1; fi + echo "使用 apk 源: ${chosen}" + sed -i "s#dl-cdn.alpinelinux.org#${chosen}#g" /etc/apk/repositories + apk add --no-cache git curl zip # 内网 Gitea 无法访问 GitHub 拉 actions/checkout,手动 clone 本仓库 - name: 拉取源码(内网无 GitHub,手动 clone 本仓库)