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