112 lines
3.0 KiB
YAML
112 lines
3.0 KiB
YAML
name: CI — DevOps Dashboard
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'backend/**'
|
|
- 'web/**'
|
|
- 'shared/**'
|
|
- 'package.json'
|
|
- 'pnpm-lock.yaml'
|
|
- 'pnpm-workspace.yaml'
|
|
- '.pnpmfile.cjs'
|
|
|
|
concurrency:
|
|
group: ci-devops-dashboard-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-and-test:
|
|
name: Build, Test & Typecheck
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- name: Pull latest
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
git fetch origin main
|
|
git checkout main
|
|
git reset --hard origin/main
|
|
|
|
- name: Secret scan
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm secret-scan
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm install:common-plat
|
|
|
|
- name: Build backend
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-backend build
|
|
|
|
- name: Build web
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-web build
|
|
|
|
- name: Typecheck backend
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-backend typecheck
|
|
|
|
- name: Typecheck web
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-web typecheck
|
|
|
|
- name: Test backend
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-backend test:run
|
|
|
|
- name: Test web
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-web test:run
|
|
|
|
- name: Lint
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-backend lint
|
|
pnpm --filter @bytelyst/devops-web lint
|
|
|
|
- name: E2E tests
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
pnpm --filter @bytelyst/devops-web test:e2e
|
|
|
|
docker-build:
|
|
name: Build Docker Images
|
|
runs-on: ubuntu-latest
|
|
needs: [build-and-test]
|
|
timeout-minutes: 20
|
|
steps:
|
|
- name: Pull latest
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
git fetch origin main
|
|
git checkout main
|
|
git reset --hard origin/main
|
|
|
|
- name: Build backend Docker image
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
docker build -f backend/Dockerfile -t devops-backend:latest .
|
|
|
|
- name: Build web Docker image
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
docker build -f web/Dockerfile -t devops-web:latest .
|
|
|
|
- name: Test Docker Compose
|
|
run: |
|
|
cd /opt/bytelyst/bytelyst-devops-tools/dashboard
|
|
docker compose up -d
|
|
sleep 10
|
|
docker compose down
|