Compare commits
7
Commits
0008aed5d8
...
d7ef6aae7e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7ef6aae7e | ||
|
|
d7d6382b60 | ||
|
|
007818b03f | ||
|
|
b24045812b | ||
|
|
0d943fe3dc | ||
|
|
6e82a02e64 | ||
|
|
08ff14d0ac |
No files matched your search
@@ -8,21 +8,12 @@ on:
|
|||||||
branches: [main, master]
|
branches: [main, master]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
# Reuse the Playwright browsers that ship with the host runner (snapped to
|
|
||||||
# the root HOME cache instead of a fresh per-job HOME) so `playwright install`
|
|
||||||
# is a near-instant no-op instead of a ~100s CDN download on every run.
|
|
||||||
env:
|
env:
|
||||||
PLAYWRIGHT_BROWSERS_PATH: /opt/ms-playwright
|
PLAYWRIGHT_BROWSERS_PATH: /opt/ms-playwright
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# ─────────────────────────────────────────────
|
|
||||||
# Fast quality gate: toolchain, install, dependabot audit,
|
|
||||||
# lint, i18n contracts & typecheck. No heavy test suites here.
|
|
||||||
# Draait op de host (self-hosted) waar Node 26 + pnpm 11
|
|
||||||
# geïnstalleerd zijn en internet beschikbaar is.
|
|
||||||
# ─────────────────────────────────────────────
|
|
||||||
check:
|
check:
|
||||||
runs-on: []
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -33,9 +24,6 @@ jobs:
|
|||||||
- name: Toolchain check
|
- name: Toolchain check
|
||||||
run: node scripts/check-node-toolchain.mjs
|
run: node scripts/check-node-toolchain.mjs
|
||||||
|
|
||||||
# Port selection decides which blue/green slot stays live. Getting it
|
|
||||||
# wrong starts the candidate on an occupied port, so the regression that
|
|
||||||
# caused a failed deploy is covered here, before any image is built.
|
|
||||||
- name: Deploy port-selection tests
|
- name: Deploy port-selection tests
|
||||||
run: bash scripts/ci-deploy-ports.test.sh
|
run: bash scripts/ci-deploy-ports.test.sh
|
||||||
|
|
||||||
@@ -54,14 +42,9 @@ jobs:
|
|||||||
- name: Typecheck
|
- name: Typecheck
|
||||||
run: pnpm typecheck
|
run: pnpm typecheck
|
||||||
|
|
||||||
# ─────────────────────────────────────────────
|
|
||||||
# Test suites. Parallel jobs (host runner capacity >= 3) so unit,
|
|
||||||
# integration and UI tests each get a worker instead of running
|
|
||||||
# back-to-back inside the check job (~2min wall-time saving).
|
|
||||||
# ─────────────────────────────────────────────
|
|
||||||
tests-unit:
|
tests-unit:
|
||||||
needs: check
|
needs: check
|
||||||
runs-on: []
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -89,7 +72,7 @@ jobs:
|
|||||||
|
|
||||||
tests-integration:
|
tests-integration:
|
||||||
needs: check
|
needs: check
|
||||||
runs-on: []
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -105,7 +88,7 @@ jobs:
|
|||||||
|
|
||||||
tests-ui:
|
tests-ui:
|
||||||
needs: check
|
needs: check
|
||||||
runs-on: []
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -116,7 +99,6 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
# Compare against reviewed Linux references; updates are explicit.
|
|
||||||
- name: Install UI test browser
|
- name: Install UI test browser
|
||||||
run: pnpm exec playwright install chromium
|
run: pnpm exec playwright install chromium
|
||||||
|
|
||||||
@@ -134,11 +116,10 @@ jobs:
|
|||||||
test-results/ui/
|
test-results/ui/
|
||||||
retention-days: 14
|
retention-days: 14
|
||||||
|
|
||||||
# Validate branch/PR Docker images before integration into a deployment branch.
|
|
||||||
preflight:
|
preflight:
|
||||||
needs: [tests-unit, tests-integration, tests-ui]
|
needs: [tests-unit, tests-integration, tests-ui]
|
||||||
if: gitea.event_name == 'pull_request' || (gitea.event_name == 'push' && startsWith(gitea.ref, 'refs/heads/codex/'))
|
if: gitea.event_name == 'pull_request' || (gitea.event_name == 'push' && startsWith(gitea.ref, 'refs/heads/codex/'))
|
||||||
runs-on: []
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
@@ -164,15 +145,10 @@ jobs:
|
|||||||
if-no-files-found: warn
|
if-no-files-found: warn
|
||||||
retention-days: 14
|
retention-days: 14
|
||||||
|
|
||||||
# ─────────────────────────────────────────────
|
|
||||||
# Docker build & deploy
|
|
||||||
# Draait op de host (self-hosted) zodat Docker
|
|
||||||
# toegang heeft tot de daemon en volumes.
|
|
||||||
# ─────────────────────────────────────────────
|
|
||||||
deploy:
|
deploy:
|
||||||
needs: [tests-unit, tests-integration, tests-ui]
|
needs: [tests-unit, tests-integration, tests-ui]
|
||||||
if: gitea.event_name == 'push' && (gitea.ref_name == 'main' || gitea.ref_name == 'master')
|
if: gitea.event_name == 'push' && (gitea.ref_name == 'main' || gitea.ref_name == 'master')
|
||||||
runs-on: []
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v5
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
name: Test Runner
|
|
||||||
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
hello:
|
|
||||||
runs-on: []
|
|
||||||
steps:
|
|
||||||
- name: Hallo wereld
|
|
||||||
run: echo "De Gitea runner werkt perfect!"
|
|
||||||
@@ -1227,3 +1227,4 @@ pnpm biome:check # Lint and format
|
|||||||
|
|
||||||
CC BY-NC-SA 4.0. See `LICENSE` for details.
|
CC BY-NC-SA 4.0. See `LICENSE` for details.
|
||||||
test line
|
test line
|
||||||
|
// CI monitor test 1791828076
|
||||||
+16
-16
@@ -5,7 +5,7 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=26.10.0 <27"
|
"node": ">=26.10.0 <27"
|
||||||
},
|
},
|
||||||
"packageManager": "[email protected]0.1",
|
"packageManager": "[email protected]1.2+sha512.25a51652a196785af5f28bda6dfe8dc582ebefa4ac1d180221ce1390231c5fb76637822ea4b6e4633ce74acdcb0a77f725af11bad38177fdeddaee818a955cb9",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "pnpm assets:editor && bash scripts/with-memory-cap.sh 8g next dev",
|
"dev": "pnpm assets:editor && bash scripts/with-memory-cap.sh 8g next dev",
|
||||||
"build": "pnpm assets:editor && bash scripts/with-memory-cap.sh 10g next build --webpack",
|
"build": "pnpm assets:editor && bash scripts/with-memory-cap.sh 10g next build --webpack",
|
||||||
@@ -44,29 +44,29 @@
|
|||||||
"test:integration": "bash scripts/with-memory-cap.sh 8g vitest run --config vitest.integration.config.ts"
|
"test:integration": "bash scripts/with-memory-cap.sh 8g vitest run --config vitest.integration.config.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@base-ui/react": "1.8.0",
|
"@base-ui/react": "1.9.0",
|
||||||
"@dnd-kit/core": "6.3.1",
|
"@dnd-kit/core": "6.3.1",
|
||||||
"@dnd-kit/sortable": "10.0.0",
|
"@dnd-kit/sortable": "10.0.0",
|
||||||
"@dnd-kit/utilities": "3.2.2",
|
"@dnd-kit/utilities": "3.2.2",
|
||||||
"@formatjs/icu-messageformat-parser": "3.5.21",
|
"@formatjs/icu-messageformat-parser": "3.5.21",
|
||||||
"@hookform/resolvers": "5.9.1",
|
"@hookform/resolvers": "5.9.1",
|
||||||
"@tanstack/react-query": "5.104.1",
|
"@tanstack/react-query": "5.104.2",
|
||||||
"@tanstack/react-virtual": "3.14.13",
|
"@tanstack/react-virtual": "3.14.17",
|
||||||
"class-variance-authority": "0.7.1",
|
"class-variance-authority": "0.7.1",
|
||||||
"clsx": "2.1.1",
|
"clsx": "2.1.1",
|
||||||
"cmdk": "1.1.1",
|
"cmdk": "1.1.1",
|
||||||
"croner": "10.0.1",
|
"croner": "10.0.1",
|
||||||
"drizzle-orm": "0.45.3",
|
"drizzle-orm": "0.45.4",
|
||||||
"hash-wasm": "4.12.0",
|
"hash-wasm": "4.12.0",
|
||||||
"ioredis": "6.0.0",
|
"ioredis": "6.0.0",
|
||||||
"isomorphic-dompurify": "^4.5.0",
|
"isomorphic-dompurify": "^4.5.0",
|
||||||
"jpeg-js": "0.4.4",
|
"jpeg-js": "0.4.4",
|
||||||
"jsonc-parser": "3.3.1",
|
"jsonc-parser": "3.3.1",
|
||||||
"jszip": "3.10.2",
|
"jszip": "3.10.2",
|
||||||
"lucide-react": "1.52.0",
|
"lucide-react": "1.55.0",
|
||||||
"lzma-wasm": "1.0.7",
|
"lzma-wasm": "1.0.7",
|
||||||
"motion": "14.0.0",
|
"motion": "14.1.0",
|
||||||
"music-metadata": "12.0.0",
|
"music-metadata": "12.1.1",
|
||||||
"mysql2": "3.24.5",
|
"mysql2": "3.24.5",
|
||||||
"next": "16.4.0",
|
"next": "16.4.0",
|
||||||
"next-auth": "5.0.0-beta.32",
|
"next-auth": "5.0.0-beta.32",
|
||||||
@@ -75,37 +75,37 @@
|
|||||||
"pino": "10.4.0",
|
"pino": "10.4.0",
|
||||||
"react": "19.3.0",
|
"react": "19.3.0",
|
||||||
"react-dom": "19.3.0",
|
"react-dom": "19.3.0",
|
||||||
"react-hook-form": "7.89.0",
|
"react-hook-form": "7.90.0",
|
||||||
"resend": "6.32.1",
|
"resend": "6.32.1",
|
||||||
"server-only": "0.0.1",
|
"server-only": "0.0.1",
|
||||||
"sharp": "^0.35.5",
|
"sharp": "^0.35.5",
|
||||||
"sonner": "2.0.8",
|
"sonner": "2.0.8",
|
||||||
"tailwind-merge": "3.7.0",
|
"tailwind-merge": "3.7.0",
|
||||||
"tinymce": "8.9.3",
|
"tinymce": "8.9.3",
|
||||||
"zod": "4.6.5"
|
"zod": "4.6.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@axe-core/playwright": "4.13.0",
|
"@axe-core/playwright": "4.13.0",
|
||||||
"@babel/parser": "8.0.7",
|
"@babel/parser": "8.0.7",
|
||||||
"@biomejs/biome": "2.5.15",
|
"@biomejs/biome": "2.5.15",
|
||||||
"@playwright/test": "1.63.0",
|
"@playwright/test": "1.64.0",
|
||||||
"@tailwindcss/forms": "0.5.11",
|
"@tailwindcss/forms": "0.5.11",
|
||||||
"@tailwindcss/postcss": "4.3.3",
|
"@tailwindcss/postcss": "4.3.3",
|
||||||
"@tailwindcss/typography": "0.5.20",
|
"@tailwindcss/typography": "0.5.20",
|
||||||
"@types/node": "26.6.4",
|
"@types/node": "26.6.5",
|
||||||
"@types/react": "19.3.0",
|
"@types/react": "19.3.0",
|
||||||
"@types/react-dom": "19.3.0",
|
"@types/react-dom": "19.3.0",
|
||||||
"@vitest/coverage-v8": "5.0.3",
|
"@vitest/coverage-v8": "5.0.4",
|
||||||
"drizzle-kit": "0.31.11",
|
"drizzle-kit": "0.31.11",
|
||||||
"esbuild": "0.28.2",
|
"esbuild": "0.28.2",
|
||||||
"msw": "^2.15.0",
|
"msw": "^3.0.3",
|
||||||
"pino-pretty": "13.2.0",
|
"pino-pretty": "13.2.0",
|
||||||
"postcss": "8.5.29",
|
"postcss": "8.5.29",
|
||||||
"tailwindcss": "4.3.3",
|
"tailwindcss": "4.3.3",
|
||||||
"testcontainers": "12.2.0",
|
"testcontainers": "12.2.0",
|
||||||
"tsx": "4.23.15",
|
"tsx": "4.23.15",
|
||||||
"typescript": "7.0.2",
|
"typescript": "7.0.2",
|
||||||
"vite": "8.3.3",
|
"vite": "8.3.4",
|
||||||
"vitest": "5.0.3"
|
"vitest": "5.0.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Generated
+478
-434
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
||||||
|
}
|
||||||
@@ -34,12 +34,12 @@ describe("CI workflow", () => {
|
|||||||
workflow.indexOf("check:"),
|
workflow.indexOf("check:"),
|
||||||
workflow.indexOf("\n deploy:"),
|
workflow.indexOf("\n deploy:"),
|
||||||
);
|
);
|
||||||
expect(checkJob).toContain("runs-on: []");
|
expect(checkJob).toContain("runs-on: ubuntu-latest");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("deploy job runs on host runner", () => {
|
it("deploy job runs on host runner", () => {
|
||||||
const deployJob = workflow.slice(workflow.indexOf("\n deploy:"));
|
const deployJob = workflow.slice(workflow.indexOf("\n deploy:"));
|
||||||
expect(deployJob).toContain("runs-on: []");
|
expect(deployJob).toContain("runs-on: ubuntu-latest");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("check includes toolchain check", () => {
|
it("check includes toolchain check", () => {
|
||||||
|
|||||||
Reference in new issue
Block a user