The backend now serves the Vue admin UI as static files with SPA fallback, eliminating the need for a separate web server. Dockerfile builds both frontend and backend in a multi-stage pipeline. Added build:web and build:all scripts, updated CI to verify frontend builds, and fixed vitest config to exclude Playwright tests. Co-Authored-By: Paperclip <noreply@paperclip.ing>
83 lines
1.8 KiB
YAML
83 lines
1.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
node-version: [22]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: npm
|
|
|
|
- run: npm ci
|
|
- run: npm run typecheck
|
|
- run: npm test
|
|
|
|
web:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
cache-dependency-path: web/package-lock.json
|
|
|
|
- name: Install and build frontend
|
|
working-directory: web
|
|
run: |
|
|
npm ci
|
|
npm run build
|
|
|
|
docker:
|
|
runs-on: ubuntu-latest
|
|
needs: [test, web]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Build Docker image
|
|
run: docker build -t cookiebridge:ci .
|
|
|
|
- name: Smoke test
|
|
run: |
|
|
docker run -d --name cb-test -p 8080:8080 cookiebridge:ci
|
|
sleep 3
|
|
curl -sf http://localhost:8080/health
|
|
curl -sf http://localhost:8080/ | grep -q '<div id="app">'
|
|
docker stop cb-test
|
|
|
|
extension:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
cache: npm
|
|
cache-dependency-path: extension/package-lock.json
|
|
|
|
- name: Install extension dependencies
|
|
working-directory: extension
|
|
run: npm ci
|
|
|
|
- name: Build all browsers
|
|
working-directory: extension
|
|
run: |
|
|
node esbuild.config.mjs --browser=chrome
|
|
node esbuild.config.mjs --browser=firefox
|
|
node esbuild.config.mjs --browser=edge
|
|
node esbuild.config.mjs --browser=safari
|