92 lines
2.0 KiB
YAML
92 lines
2.0 KiB
YAML
name: CI Pipeline
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, develop ]
|
|
pull_request:
|
|
branches: [ main, develop ]
|
|
|
|
jobs:
|
|
backend-ci:
|
|
name: Backend Build, Lint, Typecheck & Test
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'npm'
|
|
cache-dependency-path: backend/package-lock.json
|
|
|
|
- name: Install Backend Dependencies
|
|
run: |
|
|
cd backend
|
|
npm ci
|
|
|
|
- name: Generate Prisma Client
|
|
run: |
|
|
cd backend
|
|
npx prisma generate
|
|
|
|
- name: Typecheck Backend
|
|
run: |
|
|
cd backend
|
|
npx tsc --noEmit
|
|
|
|
- name: Lint Backend
|
|
run: |
|
|
cd backend
|
|
npm run lint
|
|
|
|
- name: Run Backend Unit Tests
|
|
run: |
|
|
cd backend
|
|
npm run test
|
|
env:
|
|
JWT_ACCESS_SECRET: "test_access_secret_32_characters_minimum_entropy"
|
|
JWT_REFRESH_SECRET: "test_refresh_secret_32_characters_minimum_entropy"
|
|
|
|
- name: Build Backend
|
|
run: |
|
|
cd backend
|
|
npm run build
|
|
|
|
frontend-admin-ci:
|
|
name: Admin Panel Build, Lint & Typecheck
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'npm'
|
|
cache-dependency-path: frontend/admin-panel/package-lock.json
|
|
|
|
- name: Install Admin Panel Dependencies
|
|
run: |
|
|
cd frontend/admin-panel
|
|
npm ci
|
|
|
|
- name: Typecheck Admin Panel
|
|
run: |
|
|
cd frontend/admin-panel
|
|
npx tsc --noEmit
|
|
|
|
- name: Lint Admin Panel
|
|
run: |
|
|
cd frontend/admin-panel
|
|
npm run lint
|
|
|
|
- name: Build Admin Panel
|
|
run: |
|
|
cd frontend/admin-panel
|
|
npm run build
|