From 7208637e2779f000676f35014a0c81298cb43987 Mon Sep 17 00:00:00 2001 From: cheney Date: Fri, 28 Aug 2026 09:35:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20Gitea=20Actions=20CI/CD=20=E6=B5=81?= =?UTF-8?q?=E6=B0=B4=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/deploy.yml | 87 +++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..adad2a0 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,87 @@ +name: Build and Deploy + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker image + run: | + docker build -t awesome-index:${{ github.sha }} . + docker tag awesome-index:${{ github.sha }} awesome-index:latest + + - name: Save Docker image + run: | + docker save awesome-index:latest | gzip > awesome-index.tar.gz + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: docker-image + path: awesome-index.tar.gz + retention-days: 1 + + deploy: + needs: build + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: docker-image + + - name: Deploy to server + uses: appleboy/ssh-action@master + with: + host: 114.134.187.170 + username: root + password: ${{ secrets.SERVER_PASSWORD }} + script: | + # 创建部署目录 + mkdir -p /app/awesome/data /app/awesome/logs + + - name: Copy files to server + uses: appleboy/scp-action@master + with: + host: 114.134.187.170 + username: root + password: ${{ secrets.SERVER_PASSWORD }} + source: "docker-compose.yml,start.sh" + target: "/app/awesome/" + + - name: Load and start container + uses: appleboy/ssh-action@master + with: + host: 114.134.187.170 + username: root + password: ${{ secrets.SERVER_PASSWORD }} + script: | + cd /app/awesome + + # 加载镜像 + gunzip -c awesome-index.tar.gz | docker load || true + rm -f awesome-index.tar.gz + + # 停止旧容器 + docker compose down --remove-orphans 2>/dev/null || true + + # 启动新容器 + docker compose up -d + + # 等待启动 + sleep 10 + + # 健康检查 + curl -sf http://localhost:3000/healthz && echo " - 服务已启动" || echo " - 启动失败"