From 1899f90b5c61343eb015d799627080a60227a040 Mon Sep 17 00:00:00 2001 From: yuming Date: Sat, 4 Jul 2026 11:27:31 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E8=A3=85=20Docker=20CLI=20=E5=89=8D?= =?UTF-8?q?=E5=85=88=E6=8E=A2=E6=B5=8B=20+=20apt=20=E5=8A=A0=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E5=85=9C=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上次两次构建都在"安装 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) --- .gitea/workflows/deploy.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index f585b47..b9bc7e3 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -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