From ff17653d1be74ca537b3bad176259401183dd55e Mon Sep 17 00:00:00 2001 From: Leo Date: Thu, 23 Apr 2026 08:44:10 +0000 Subject: [PATCH] =?UTF-8?q?Jenkinsfile=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..b580edb --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,115 @@ +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' + } + } + } + + 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." + } + } +}