bytelyst-devops-tools/dashboard/.gitea/workflows/ci.yml

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