test: Jenkinsfile

This commit is contained in:
ISA
2025-09-08 08:45:06 +02:00
parent 25b6c5c3b0
commit 112f537904
6 changed files with 21 additions and 102 deletions

View File

@@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false
NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_EXPORT_STATIC=false
NEXT_PUBLIC_USE_CGI=false NEXT_PUBLIC_USE_CGI=false
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.863 NEXT_PUBLIC_APP_VERSION=1.6.864
NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter)

View File

@@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL
NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_EXPORT_STATIC=true
NEXT_PUBLIC_USE_CGI=true NEXT_PUBLIC_USE_CGI=true
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.863 NEXT_PUBLIC_APP_VERSION=1.6.864
NEXT_PUBLIC_CPL_MODE=production NEXT_PUBLIC_CPL_MODE=production

View File

@@ -1,3 +1,8 @@
## [1.6.864] 2025-09-08
- fix: Jenkinsfile
---
## [1.6.863] 2025-09-08 ## [1.6.863] 2025-09-08
- fix: Vereinfacht: Jenkinsfile - fix: Vereinfacht: Jenkinsfile

112
Jenkinsfile vendored
View File

@@ -1,113 +1,27 @@
// Jenkinsfile
pipeline { pipeline {
agent { agent any
// Wir nutzen das Playwright-Image auch als Build-/Test-Container tools { nodejs 'node20' } // exakt der Name aus "Manage Jenkins → Tools"
// (enthält Node, Browser & nötige Deps)
docker {
image 'mcr.microsoft.com/playwright:v1.54.2-jammy'
// optional: args '--user root' falls Rechte benötigt werden
reuseNode true
}
}
options {
timestamps()
ansiColor('xterm')
}
environment {
CI = "true"
NODE_ENV = "production"
NEXT_TELEMETRY_DISABLED = "1"
PORT = "3000"
}
stages { stages {
stage('Versions') {
stage('Checkout') { steps { sh 'node -v && npm -v' }
}
stage('Install deps') {
steps { sh 'npm ci' }
}
stage('Playwright tests') {
steps { steps {
// Standard-Checkout; läuft im Container sh 'npx playwright install' // Browser-Binärdateien laden
checkout scm sh 'npx playwright test'
// LFS & Submodule wie in Woodpecker aktivieren
sh '''
set -eux
# Falls LFS verwendet wird:
if command -v git >/dev/null; then
git lfs install || true
# Submodule + LFS-Dateien sicherstellen
git submodule update --init --recursive || true
# LFS-Dateien ziehen (falls vorhanden)
git lfs fetch || true
git lfs checkout || true
fi
# Debug: kurzer Baumüberblick
git status --short || true
'''
}
}
stage('verify-mocks') {
steps {
sh '''
set -eux
pwd
node -v && npm -v
# Husky/prepare überspringen wie im Woodpecker-Job
npm ci --ignore-scripts
echo "=== git ls-files ==="
git ls-files | grep -i "^mocks/device-cgi-simulator/SERVICE/systemMockData.js" || true
echo "=== ls -la ==="
ls -la mocks/device-cgi-simulator/SERVICE || true
echo "=== file exists? ==="
test -f mocks/device-cgi-simulator/SERVICE/systemMockData.js && echo "FOUND" || (echo "MISSING" && exit 1)
'''
}
}
stage('e2e-dev') {
steps {
sh '''
set -eux
node -v && npm -v
# Husky als devDep nicht ausführen -> npm_config_production=false
env npm_config_production=false npm ci
npm run build
# Sim-Server im Hintergrund starten
npm run server:sim &
# Auf Port 3000 warten (ohne curl)
node -e "const http=require('http');let n=120;function ping(){http.get('http://localhost:3000',res=>{console.log('Server is up');process.exit(0)}).on('error',()=>{if(n--<=0){console.error('Server did not start');process.exit(1)}setTimeout(ping,1000)});}ping();"
# Playwright Tests
npx playwright test --project=chromium
'''
} }
} }
} }
post { post {
success { success {
sh ''' sh 'curl.exe -d "Tests erfolgreich" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35'
set -eux
curl -d "Tests erfolgreich in woodpecker" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35
'''
} }
failure { failure {
sh ''' sh 'curl.exe -d "Tests fehlgeschlagen" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35'
set -eux
curl -d "Tests fehlgeschlagen in woodpecker" https://ntfy.sh/OEOr8DNB0aT2mXWg231PeEEKwvuzt86qgM8ezQmgfcX9ZIlZ35
'''
}
always {
// Optional: Artefakte, Logs, Playwright-Reports archivieren
// archiveArtifacts artifacts: 'playwright-report/**', onlyIfSuccessful: false
} }
} }
} }

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.863", "version": "1.6.864",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.863", "version": "1.6.864",
"dependencies": { "dependencies": {
"@fontsource/roboto": "^5.1.0", "@fontsource/roboto": "^5.1.0",
"@headlessui/react": "^2.2.4", "@headlessui/react": "^2.2.4",

View File

@@ -1,6 +1,6 @@
{ {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.863", "version": "1.6.864",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev -p 3000", "dev": "next dev -p 3000",