pipeline { agent { kubernetes { inheritFrom 'frontend-agent' // dein Pod Template – node-builder Container muss drin sein } } // ============================================================ // Konfiguration – hier anpassen // ============================================================ environment { NEXUS_URL = 'registry.nexus.deinedorfapp.de' NEXUS_CREDENTIAL = 'Nexus' IMAGE_NAME = 'frontend' IMAGE_TAG = "${env.BUILD_NUMBER}" IMAGE_FULL = "${NEXUS_URL}/${IMAGE_NAME}:${IMAGE_TAG}" IMAGE_LATEST = "${NEXUS_URL}/${IMAGE_NAME}:latest" } // ============================================================ options { timestamps() disableConcurrentBuilds() buildDiscarder(logRotator(numToKeepStr: '10')) } stages { stage('Checkout') { steps { echo ">>> Quellcode auschecken" checkout scm } } stage('Dependencies installieren') { steps { container('frontend-builder') { echo ">>> npm install" sh 'npm ci' } } } stage('Lint') { steps { container('frontend-builder') { echo ">>> ESLint prüfen" sh 'npm run lint || true' // Fehler werden geloggt aber Build läuft weiter } } } stage('Build (Vite)') { steps { container('frontend-builder') { echo ">>> Vite Production Build" sh 'npm run build' } } } stage('Docker Image bauen') { steps { container('docker-builder') { echo ">>> Docker Image wird gebaut: ${IMAGE_FULL}" sh """ docker build \ --build-arg BUILD_NUMBER=${env.BUILD_NUMBER} \ -t ${IMAGE_FULL} \ -t ${IMAGE_LATEST} \ . """ } } } stage('Push zu Nexus') { steps { container('docker-builder') { echo ">>> Push zu Nexus Docker Registry" withCredentials([usernamePassword( credentialsId: "${NEXUS_CREDENTIAL}", usernameVariable: 'NEXUS_USER', passwordVariable: 'NEXUS_PASS' )]) { sh "echo \${NEXUS_PASS} | docker login ${NEXUS_URL} -u \${NEXUS_USER} --password-stdin" sh "docker push ${IMAGE_FULL}" sh "docker push ${IMAGE_LATEST}" } } } } stage('Aufräumen') { steps { container('docker-builder') { echo ">>> Lokale Docker Images entfernen" sh "docker rmi ${IMAGE_FULL} || true" sh "docker rmi ${IMAGE_LATEST} || true" } } } } post { success { echo ">>> Build erfolgreich! Image verfügbar unter: ${IMAGE_FULL}" } failure { echo ">>> Build fehlgeschlagen! Bitte Logs prüfen." } } }