ci: 装 Docker CLI 步骤加详细排查日志

之前 apt-get update 用 -qq 静默,看不到到底卡在哪。加日志:
- 打印 os-release、sources 文件列表和内容
- 换源后对比确认 sed 生效
- DNS 解析 + HTTP 探测 mirrors.aliyun.com
- apt-get update 去 -qq 输出详细

拿到日志再定位下一步(DNS 问题?network 问题?sources 格式问题?)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuming
2026-07-04 14:35:18 +08:00
parent 9038c39afa
commit a7741b9de2
+21 -5
View File
@@ -10,18 +10,34 @@ jobs:
steps: steps:
- name: 安装 Docker CLI - name: 安装 Docker CLI
run: | run: |
# 大概率 gitea act_runner 已预装 docker,先探测(避免 apt 走国外源超时)
if command -v docker >/dev/null 2>&1; then if command -v docker >/dev/null 2>&1; then
echo "Docker 已预装:$(docker --version)" echo "Docker 已预装:$(docker --version)"
exit 0 exit 0
fi fi
echo "Docker 未预装,换 Ubuntu 源到阿里云再 apt 安装" echo "=== 1. 系统信息 ==="
# 兼容 legacy sources.list、deb822 .sources、以及 sources.list.d/*.list cat /etc/os-release | head -5 || true
echo ""
echo "=== 2. 换源前 sources 文件 ==="
ls -la /etc/apt/sources.list /etc/apt/sources.list.d/ 2>&1 || true
grep -h -E 'ubuntu|debian|http' /etc/apt/sources.list /etc/apt/sources.list.d/*.sources /etc/apt/sources.list.d/*.list 2>/dev/null | grep -v '^#' | head -10 || true
echo ""
echo "=== 3. 换源到阿里云 ==="
sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g;s|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list 2>/dev/null || true sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g;s|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list 2>/dev/null || true
sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g;s|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list.d/*.sources 2>/dev/null || true sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g;s|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list.d/*.sources 2>/dev/null || true
sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g;s|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list.d/*.list 2>/dev/null || true sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g;s|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list.d/*.list 2>/dev/null || true
timeout 90 apt-get update -qq || { echo "apt-get update 超时/失败"; exit 1; } echo "--- 换源后 sources 内容:"
timeout 240 apt-get install -y -qq docker.io || { echo "docker.io 安装超时/失败"; exit 1; } grep -h -E 'aliyun|ubuntu|debian|http' /etc/apt/sources.list /etc/apt/sources.list.d/*.sources /etc/apt/sources.list.d/*.list 2>/dev/null | grep -v '^#' | head -10 || true
echo ""
echo "=== 4. 网络探测 ==="
echo "--- DNS 解析 mirrors.aliyun.com:"
timeout 5 getent hosts mirrors.aliyun.com || echo "DNS 解析失败"
echo "--- HTTP 探测 mirrors.aliyun.com:"
timeout 10 curl -s -o /dev/null -w "http_code=%{http_code} time=%{time_total}s\n" http://mirrors.aliyun.com/ || echo "curl 阿里云失败"
echo ""
echo "=== 5. apt-get update ==="
timeout 90 apt-get update || { echo "apt-get update 失败,看上面日志定位"; exit 1; }
echo "=== 6. 安装 docker.io ==="
timeout 240 apt-get install -y docker.io || { echo "docker.io 安装超时"; exit 1; }
docker --version docker --version
- name: 拉取代码 - name: 拉取代码