diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index d5e04f6..956b15d 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -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()