name: 前端构建与检查 on: push: branches: [main, develop, 'feature/**', 'feat/**'] paths-ignore: - '**.md' - 'docs/**' pull_request: branches: [main, develop] paths-ignore: - '**.md' - 'docs/**' jobs: lint-and-type-check: name: 代码检查 runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装 Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' - name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8 run_install: false - name: 安装依赖 run: pnpm install --frozen-lockfile - name: 运行 ESLint run: pnpm lint || true - name: 运行类型检查 run: pnpm type-check || true build-admin-ui: name: 构建 Admin UI runs-on: ubuntu-latest needs: lint-and-type-check steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装 Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' - name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8 run_install: false - name: 安装依赖 run: pnpm install --frozen-lockfile - name: 构建 Admin UI run: pnpm build:admin - name: 上传构建产物 uses: actions/upload-artifact@v4 with: name: admin-ui-dist path: admin-ui/dist retention-days: 7 build-cashier-mobile: name: 构建收银移动端 runs-on: ubuntu-latest needs: lint-and-type-check steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装 Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' - name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8 run_install: false - name: 安装依赖 run: pnpm install --frozen-lockfile - name: 构建收银移动端 run: pnpm build:cashier - name: 上传构建产物 uses: actions/upload-artifact@v4 with: name: cashier-mobile-dist path: cashier-mobile/dist retention-days: 7 build-customer-mobile: name: 构建顾客移动端 runs-on: ubuntu-latest needs: lint-and-type-check steps: - name: 检出代码 uses: actions/checkout@v4 - name: 安装 Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'pnpm' - name: 安装 pnpm uses: pnpm/action-setup@v2 with: version: 8 run_install: false - name: 安装依赖 run: pnpm install --frozen-lockfile - name: 构建顾客移动端 run: pnpm build:customer - name: 上传构建产物 uses: actions/upload-artifact@v4 with: name: customer-mobile-dist path: customer-mobile/dist retention-days: 7