Skip to content

feat: 实现侧边栏折叠功能 - AdminLayout和DashboardLayout支持展开/收起 #47

feat: 实现侧边栏折叠功能 - AdminLayout和DashboardLayout支持展开/收起

feat: 实现侧边栏折叠功能 - AdminLayout和DashboardLayout支持展开/收起 #47

Workflow file for this run

name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
lint-and-type-check:
name: Lint & Type Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run ESLint
run: pnpm run lint
continue-on-error: true
- name: Type check
run: pnpm exec tsc --noEmit
continue-on-error: true
build:
name: Build Application
runs-on: ubuntu-latest
needs: lint-and-type-check
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Cache Prisma Client
uses: actions/cache@v4
id: prisma-cache
with:
path: node_modules/.prisma
key: ${{ runner.os }}-prisma-${{ hashFiles('**/prisma/schema.prisma') }}
- name: Generate Prisma Client
if: steps.prisma-cache.outputs.cache-hit != 'true'
run: pnpm run db:generate
- name: Cache Next.js build
uses: actions/cache@v4
with:
path: |
.next/cache
${{ github.workspace }}/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-
- name: Build Next.js
run: pnpm run build
env:
DATABASE_URL: "file:./dev.db"
JWT_SECRET: "ci-test-secret-key"
- name: Check build output
run: |
ls -lh .next
du -sh .next
test:
name: Run Tests
runs-on: ubuntu-latest
needs: lint-and-type-check
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Cache Prisma Client
uses: actions/cache@v4
id: prisma-cache
with:
path: node_modules/.prisma
key: ${{ runner.os }}-prisma-${{ hashFiles('**/prisma/schema.prisma') }}
- name: Generate Prisma Client
if: steps.prisma-cache.outputs.cache-hit != 'true'
run: pnpm run db:generate
- name: Run tests
run: echo "No tests configured yet"
# run: pnpm test
deploy-preview:
name: Deploy Preview (Info)
runs-on: ubuntu-latest
needs: build
if: github.event_name == 'pull_request'
steps:
- name: Comment PR
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '🚀 Preview deployment will be available on Cloudflare Pages after merge.'
})