81 lines
2.5 KiB
YAML
81 lines
2.5 KiB
YAML
name: ci
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ci-${{ gitea.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
static:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- run: python tools/validate_v16.py
|
|
- run: python -m unittest -v
|
|
working-directory: research/hardening
|
|
- run: python -m unittest -v scripts.tests.test_scaffold_slice scripts.tests.test_scaffold_ui_screen
|
|
|
|
backend:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
services:
|
|
postgres:
|
|
image: postgres:17
|
|
env:
|
|
POSTGRES_DB: kartsell
|
|
POSTGRES_USER: kartsell
|
|
POSTGRES_PASSWORD: kartsell
|
|
ports: ["5432:5432"]
|
|
options: >-
|
|
--health-cmd "pg_isready -U kartsell"
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: '10.0.x'
|
|
- run: dotnet restore KArtSell.sln
|
|
- run: dotnet build KArtSell.sln --no-restore -c Release
|
|
- run: dotnet run --project src/KArtSell.DbMigrator -c Release --no-build
|
|
env:
|
|
KARTSELL_POSTGRES: Host=localhost;Port=5432;Database=kartsell;Username=kartsell;Password=kartsell
|
|
- run: dotnet run --project src/KArtSell.DbMigrator -c Release --no-build
|
|
env:
|
|
KARTSELL_POSTGRES: Host=localhost;Port=5432;Database=kartsell;Username=kartsell;Password=kartsell
|
|
- run: dotnet test KArtSell.sln --no-build -c Release --logger trx
|
|
env:
|
|
KARTSELL_POSTGRES: Host=localhost;Port=5432;Database=kartsell;Username=kartsell;Password=kartsell
|
|
|
|
frontend:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: test -f frontend/pnpm-lock.yaml || (echo "pnpm-lock.yaml is required for reproducible CI" && exit 1)
|
|
- uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
cache: pnpm
|
|
cache-dependency-path: frontend/pnpm-lock.yaml
|
|
- run: pnpm install --frozen-lockfile
|
|
working-directory: frontend
|
|
- run: pnpm typecheck && pnpm test && pnpm build
|
|
working-directory: frontend
|
|
- run: pnpm exec playwright install --with-deps chromium && pnpm e2e
|
|
working-directory: frontend
|