# admin.xpcool.com 自动部署:Gitea act_runner(push main/dev 触发) # 注意点: # 1. job 基础镜像为 node:20-bullseye,但项目 pnpm@11 强依赖 node:sqlite(node 22.5+), # 故先下载 node 22 二进制替换 PATH(npmmirror 源)。 # 2. 构建必须直接跑 vite build(pnpm/turbo build 会卡死 15min+ 无产出),产物 apps/web-tdesign/dist。 # 3. 部署目标 /data/www/admin.xpcool.com(runner 已挂载 /data/www)。 name: Build and Deploy (admin.xpcool.com) on: push: branches: [main, dev] workflow_dispatch: jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Install git & node 22 (npmmirror) run: | set -e apt-get update -qq apt-get install -y -qq git xz-utils >/dev/null # node 22 二进制解压到 /opt,PATH 前置(覆盖镜像自带 node 20) curl -fsSL https://npmmirror.com/mirrors/node/v22.22.2/node-v22.22.2-linux-x64.tar.xz -o /tmp/node.tar.xz mkdir -p /opt && tar -xJf /tmp/node.tar.xz -C /opt export PATH="/opt/node-v22.22.2-linux-x64/bin:$PATH" echo "/opt/node-v22.22.2-linux-x64/bin" >> "$GITHUB_ENV" echo "PATH=$PATH" >> "$GITHUB_ENV" node -v && npm -v - 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: Enable pnpm via corepack (npmmirror) env: COREPACK_NPM_REGISTRY: https://registry.npmmirror.com COREPACK_DEFAULT_TO_LATEST: "0" run: | export PATH="/opt/node-v22.22.2-linux-x64/bin:$PATH" corepack enable corepack prepare pnpm@11.16.0 --activate pnpm -v - name: Install dependencies env: NODE_OPTIONS: --experimental-sqlite run: | export PATH="/opt/node-v22.22.2-linux-x64/bin:$PATH" pnpm install - name: Build (vite direct, avoid turbo hang) env: NODE_OPTIONS: "--experimental-sqlite --max-old-space-size=8192" run: | export PATH="/opt/node-v22.22.2-linux-x64/bin:$PATH" cd apps/web-tdesign ./node_modules/.bin/vite build --mode production - name: Deploy to /data/www/admin.xpcool.com run: | set -e SRC=apps/web-tdesign/dist DST=/data/www/admin.xpcool.com if [ ! -d "$SRC" ]; then echo "BUILD OUTPUT NOT FOUND: $SRC" exit 1 fi mkdir -p "$DST" find "$DST" -mindepth 1 -delete cp -r "$SRC"/. "$DST"/ chmod -R a+rX "$DST" echo "Deployed admin.xpcool.com -> $DST"