修复:自动安装 Docker Compose 插件确保部署成功
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Failing after 12s

- 在工作流开始时检查并安装 Docker Compose 插件
- 优先使用国内镜像(ghproxy.com)加速下载
- 失败时自动回退到官方 GitHub 源
- 简化部署步骤逻辑,移除冗余的版本检测
- 添加 emoji 标记让日志更清晰易读

这确保 Runner 环境中始终有可用的 docker compose 命令
This commit is contained in:
2026-01-20 09:54:20 +08:00
parent 609e952a5a
commit 94d8570d46

View File

@@ -18,6 +18,37 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 安装 Docker Compose 插件
run: |
# 检查是否已安装
if docker compose version &> /dev/null; then
echo "✅ Docker Compose 已安装"
docker compose version
else
echo "📦 安装 Docker Compose 插件..."
# 创建插件目录
mkdir -p ~/.docker/cli-plugins/
# 尝试从国内镜像下载(更快)
echo "尝试从国内镜像下载..."
if curl -fSL --connect-timeout 10 https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose 2>/dev/null; then
echo "✅ 从国内镜像下载成功"
else
echo "⚠️ 国内镜像失败,尝试官方源..."
curl -fSL https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
fi
chmod +x ~/.docker/cli-plugins/docker-compose
# 验证安装
if docker compose version; then
echo "✅ Docker Compose 安装成功"
else
echo "❌ Docker Compose 安装失败"
exit 1
fi
fi
- name: 检出代码
run: |
git clone https://git.boss160.cn/csxj2026/junhong_cmp_fiber.git .
@@ -68,41 +99,28 @@ jobs:
cd ${{ env.DEPLOY_DIR }}
# 检查 docker compose 版本
echo "检查 Docker Compose..."
docker --version
docker compose version || echo "docker compose 不可用"
echo "📋 当前部署目录: $(pwd)"
echo "🔍 验证 Docker Compose..."
docker compose version
# 设置 COMPOSE 命令(兼容 V1 和 V2
if command -v docker-compose &> /dev/null; then
COMPOSE="docker-compose"
echo "使用 docker-compose (V1)"
elif docker compose version &> /dev/null; then
COMPOSE="docker compose"
echo "使用 docker compose (V2)"
else
echo "错误: 未找到 docker-compose 或 docker compose"
exit 1
fi
echo "📥 拉取最新镜像..."
docker compose -f docker-compose.prod.yml pull
echo "拉取最新镜像..."
$COMPOSE -f docker-compose.prod.yml pull
echo "🚀 执行滚动更新..."
docker compose -f docker-compose.prod.yml up -d --no-deps
echo "执行滚动更新..."
$COMPOSE -f docker-compose.prod.yml up -d --no-deps
echo "等待服务健康检查..."
echo "⏳ 等待服务健康检查..."
sleep 10
echo "清理旧镜像(保留最近 3 个版本)..."
echo "🧹 清理旧镜像(保留最近 3 个版本)..."
docker images ${{ env.API_IMAGE }} --format "{{.ID}}" | tail -n +4 | xargs -r docker rmi -f || true
docker images ${{ env.WORKER_IMAGE }} --format "{{.ID}}" | tail -n +4 | xargs -r docker rmi -f || true
echo "清理悬空镜像..."
echo "🧹 清理悬空镜像..."
docker image prune -f
echo "部署完成!"
$COMPOSE -f docker-compose.prod.yml ps
echo "部署完成!"
docker compose -f docker-compose.prod.yml ps
- name: 构建结果通知
if: always()