ci: 装 Docker CLI 前先探测 + apt 加超时兜底

上次两次构建都在"安装 Docker CLI"这步 3h9m 卡死超时。原因:
- Runner 是 ubuntu-latest(Ubuntu 源),但 sed 只匹配 deb.debian.org,实际未换源
- apt-get 走原始 Ubuntu 源,网络出去慢就无限挂到全局 timeout

修改:
- 先 command -v docker 探测(gitea act_runner 大概率预装了 docker)
- 没有再走 apt 装,用 timeout 包裹各命令(update 60s / install 180s),超时快速失败而非 3h 挂死

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuming
2026-07-04 11:27:31 +08:00
parent 45d3a3de4d
commit 1899f90b5c
+9 -5
View File
@@ -10,11 +10,15 @@ jobs:
steps:
- name: 安装 Docker CLI
run: |
# 替换 Debian 源为清华镜像,避免国内连 deb.debian.org 超时
sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null || true
sed -i 's|security.debian.org|mirrors.tuna.tsinghua.edu.cn/debian-security|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null || true
apt-get update -qq
apt-get install -y -qq docker.io
# 大概率 gitea act_runner 已预装 docker,先探测(避免 apt 走国外源 3h 超时)
if command -v docker >/dev/null 2>&1; then
echo "Docker 已预装:$(docker --version)"
exit 0
fi
echo "Docker 未预装,开始 apt 安装(每步限时 3 分钟,超时快速失败)"
timeout 60 apt-get update -qq || { echo "apt-get update 超时/失败"; exit 1; }
timeout 180 apt-get install -y -qq docker.io || { echo "docker.io 安装超时/失败"; exit 1; }
docker --version
- name: 拉取代码
uses: actions/checkout@v4