admin.xpcool.com/.gitea/workflows/deploy.yml
夏犀麟 b02d678dea
Some checks failed
Build and Deploy (admin.xpcool.com) / build-and-deploy (push) Failing after 1m15s
FIX: workflow apt 换腾讯云源(deb.debian.org 国内直连超时导致卡死)
2026-08-27 00:18:43 +08:00

79 lines
3.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# admin.xpcool.com 自动部署Gitea act_runnerpush main/dev 触发)
# 注意点:
# 1. job 基础镜像为 node:20-bullseye但项目 pnpm@11 强依赖 node:sqlitenode 22.5+
# 故先下载 node 22 二进制替换 PATHnpmmirror 源)。
# 2. 构建必须直接跑 vite buildpnpm/turbo build 会卡死 15min+ 无产出),产物 apps/web-tdesign/dist。
# 3. 部署目标 /data/www/admin.xpcool.comrunner 已挂载 /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 换腾讯云源deb.debian.org 国内直连超时)
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 -qq
apt-get install -y -qq git xz-utils >/dev/null
# node 22 二进制解压到 /optPATH 前置(覆盖镜像自带 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=hoistedvite 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"