From cf5c6da85259df331cbdc9ab2f94d9dfdee021eb Mon Sep 17 00:00:00 2001 From: xpcool-bot Date: Tue, 25 Aug 2026 00:16:50 +0800 Subject: [PATCH] ci: add build & docker deploy workflow with notification --- .gitea/workflows/deploy.yml | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 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..8f1b964 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,49 @@ +# deployed by gitea act_runner (push to main triggers this) +name: Build and Deploy (admin.xpcool.com) + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Install git & docker CLI + run: | + sed -i 's|deb.debian.org|mirrors.cloud.tencent.com|g; s|security.debian.org|mirrors.cloud.tencent.com|g' /etc/apt/sources.list 2>/dev/null || true + sed -i 's|deb.debian.org|mirrors.cloud.tencent.com|g; s|security.debian.org|mirrors.cloud.tencent.com|g' /etc/apt/sources.list.d/debian.sources 2>/dev/null || true + apt-get update + apt-get install -y git docker.io + + - name: Checkout (local Gitea) + run: | + git clone --depth 1 --branch "${{ github.ref_name }}" https://oauth2:${{ github.token }}@git.xpcool.com/${{ github.repository }}.git . + git checkout ${{ github.sha }} + + - name: Docker build & deploy + run: | + # .npmrc 里的 store-dir 是 Windows 路径,Linux 容器里会导致 pnpm 异常,临时移除 + sed -i '/store-dir=/d' .npmrc + docker build -f scripts/deploy/Dockerfile -t admin.xpcool.com:latest . + docker rm -f admin.xpcool.com 2>/dev/null || true + docker run -d \ + --name admin.xpcool.com \ + --restart unless-stopped \ + -p 127.0.0.1:8010:8080 \ + admin.xpcool.com:latest + + - name: Notify success (PushPlus) + if: success() + run: | + curl -s -X POST "https://www.pushplus.plus/send" \ + -H "Content-Type: application/json" \ + -d '{"token":"${{ secrets.PUSHPLUS_TOKEN }}","title":"✅ 部署成功 admin.xpcool.com","content":"仓库: ${{ github.repository }}
分支: ${{ github.ref_name }}
提交: ${{ github.sha }}
触发人: ${{ github.actor }}
状态: 编译打包部署成功
访问: https://admin.xpcool.com","template":"html"}' + + - name: Notify failure (PushPlus) + if: failure() + run: | + curl -s -X POST "https://www.pushplus.plus/send" \ + -H "Content-Type: application/json" \ + -d '{"token":"${{ secrets.PUSHPLUS_TOKEN }}","title":"❌ 部署失败 admin.xpcool.com","content":"仓库: ${{ github.repository }}
分支: ${{ github.ref_name }}
提交: ${{ github.sha }}
触发人: ${{ github.actor }}
状态: 构建或部署失败
日志: https://git.xpcool.com/${{ github.repository }}/actions","template":"html"}'