diff --git a/.github/workflows/nextjs.yml b/.github/workflows/nextjs.yml index ae4663d..2225f8b 100644 --- a/.github/workflows/nextjs.yml +++ b/.github/workflows/nextjs.yml @@ -36,7 +36,7 @@ jobs: # 缓存 pnpm 依赖 - name: 缓存 pnpm 依赖 - uses: actions/cache@v4 + uses: actions/cache@v3 with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} @@ -47,10 +47,6 @@ jobs: - name: 安装依赖 run: pnpm install --frozen-lockfile - # 代码检查 - - name: 代码检查 - run: pnpm run lint --fix || true - # 构建应用 - name: 构建应用 run: pnpm run build @@ -74,9 +70,9 @@ jobs: # 创建压缩包 tar -czf deploy-package.tar.gz -C deploy-package . - # 上传部署包 + # 上传部署包 (使用 v3 兼容 GHES) - name: 上传部署包 - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: deploy-package path: deploy-package.tar.gz @@ -89,15 +85,15 @@ jobs: if: github.ref == 'refs/heads/main' && github.event_name == 'push' steps: - # 下载部署包 + # 下载部署包 (使用 v3 兼容 GHES) - name: 下载部署包 - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v3 with: name: deploy-package # 拷贝部署包到服务器 - name: 拷贝部署包到服务器 - uses: appleboy/scp-action@master + uses: appleboy/scp-action@v0.1.4 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} @@ -108,7 +104,7 @@ jobs: # 在服务器上部署 - name: 在服务器上部署应用 - uses: appleboy/ssh-action@master + uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} @@ -166,7 +162,7 @@ jobs: --name saas2-app \ --restart unless-stopped \ -p 3000:3000 \ - --health-cmd="curl -f http://localhost:3000/api/health || exit 1" \ + --health-cmd="wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1" \ --health-interval=30s \ --health-timeout=10s \ --health-retries=3 \ @@ -174,7 +170,7 @@ jobs: # 等待容器启动 echo "等待容器启动..." - sleep 10 + sleep 15 # 检查容器状态 if [ "$(docker ps -q -f name=saas2-app)" ]; then @@ -182,6 +178,14 @@ jobs: docker ps | grep saas2-app echo "" echo "应用访问地址: http://$(hostname -I | awk '{print $1}'):3000" + + # 测试健康检查 + echo "测试健康检查..." + if wget --timeout=10 -qO- http://localhost:3000/api/health > /dev/null 2>&1; then + echo "✅ 健康检查通过" + else + echo "⚠️ 健康检查失败,但容器正在运行" + fi else echo "❌ 部署失败!容器未能正常启动" echo "容器日志:"