/
fegerV
/
Stogram
Обзор
Документация
Войти
/
fegerV
/
Stogram
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
.github/workflows/ci.yml
215 строк
5 KB
engine-labs-app[bot]
feat(security): add IP rate limiting, CSP & HSTS headers, audit logging, update deps, add tests & CI
05 ноя 2025, 01:58
05 ноя 2025, 01:58
42e580b
Код
Авторство
О чём код?
name: CI/CD Pipeline on: push: branches: [main, develop, chore/**] pull_request: branches: [main, develop] jobs: # Lint and Type Check lint-and-typecheck: name: Lint and 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: '20' cache: 'npm' - name: Install root dependencies run: npm ci - name: Install server dependencies working-directory: ./server run: npm ci - name: Install client dependencies working-directory: ./client run: npm ci - name: Lint client working-directory: ./client run: npm run lint - name: Type check server working-directory: ./server run: npx tsc --noEmit - name: Type check client working-directory: ./client run: npx tsc --noEmit # Server Tests test-server: name: Test Server runs-on: ubuntu-latest services: postgres: image: postgres:15 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: stogram_test options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 redis: image: redis:7 options: >- --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 6379:6379 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install server dependencies working-directory: ./server run: npm ci - name: Generate Prisma Client working-directory: ./server run: npx prisma generate env: DATABASE_URL: postgresql://postgres:postgres@localhost:5432/stogram_test - name: Run migrations working-directory: ./server run: npx prisma migrate deploy env: DATABASE_URL: postgresql://postgres:postgres@localhost:5432/stogram_test - name: Run server tests working-directory: ./server run: npm test env: DATABASE_URL: postgresql://postgres:postgres@localhost:5432/stogram_test REDIS_URL: redis://localhost:6379 JWT_SECRET: test-secret-key NODE_ENV: test - name: Upload server coverage uses: codecov/codecov-action@v3 with: files: ./server/coverage/coverage-final.json flags: server name: server-coverage # Client Tests test-client: name: Test Client 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' - name: Install client dependencies working-directory: ./client run: npm ci - name: Run client tests working-directory: ./client run: npm test - name: Upload client coverage uses: codecov/codecov-action@v3 with: files: ./client/coverage/coverage-final.json flags: client name: client-coverage # Build build: name: Build Application runs-on: ubuntu-latest needs: [lint-and-typecheck, test-server, test-client] steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: | npm ci cd server && npm ci cd ../client && npm ci - name: Generate Prisma Client working-directory: ./server run: npx prisma generate - name: Build server working-directory: ./server run: npm run build - name: Build client working-directory: ./client run: npm run build - name: Upload build artifacts uses: actions/upload-artifact@v3 with: name: build-artifacts path: | server/dist client/dist retention-days: 7 # Security Audit security-audit: name: Security Audit 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' - name: Run npm audit (server) working-directory: ./server run: npm audit --audit-level=moderate continue-on-error: true - name: Run npm audit (client) working-directory: ./client run: npm audit --audit-level=moderate continue-on-error: true