canina/.github/workflows/ci.yml
2026-08-06 22:27:56 +03:30

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