Some checks failed
Build and Deploy (admin.xpcool.com) / build-and-deploy (push) Has been cancelled
76 lines
2.8 KiB
YAML
76 lines
2.8 KiB
YAML
# 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
|
||
# .npmrc 为 node-linker=hoisted:vite bin 在仓库根 node_modules/.bin
|
||
../../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"
|