From 5abb730fd6ac4e130bb87562799853ff185c2dc6 Mon Sep 17 00:00:00 2001 From: veenm Date: Sat, 18 Jan 2025 14:42:10 +0100 Subject: [PATCH] Jenkinsfile update --- Jenkinsfile | 73 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8f92e67..32d5a67 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,25 +2,68 @@ pipeline { agent any environment { - // Definieer de SSH credentials ID die in Jenkins is opgeslagen - SSH_CREDENTIALS_ID = 'ssh-true-nas' - TRUENAS_HOST = '192.168.2.31' // Pas aan naar het IP-adres van de TrueNAS server - SSH_USER = 'jenkins' // Pas aan naar de SSH-gebruikersnaam + SSH_CREDENTIALS_ID = 'ssh-true-nas' // ID van de SSH-sleutel in Jenkins + TRUENAS_HOST = '192.168.2.31' // IP-adres of hostname van TrueNAS + SSH_USER = 'jenkins' // SSH-gebruiker voor TrueNAS + IMAGE_NAME = 'jobFindr' // Naam van de Docker-image + IMAGE_TAG = 'latest' // Docker-tag } stages { - stage('Connect to TrueNAS') { + stage('Checkout Code') { + steps { + checkout scm + } + } + + stage('Build Quarkus Project') { steps { script { - echo "hallo" - // Gebruik SSH-agent om een verbinding te maken + // Bouw het Quarkus-project (assumeert Maven als build tool) + sh './mvnw clean package -DskipTests' + } + } + } + + stage('Build Docker Image') { + steps { + script { + // Maak een Docker-image gebaseerd op de Dockerfile + sh """ + docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . + """ + } + } + } + + stage('Push Docker Image (Optional)') { + when { + expression { + return env.DOCKER_REGISTRY != null && env.DOCKER_REGISTRY.trim() != '' + } + } + steps { + script { + // Push de Docker-image naar een Docker Registry + sh """ + docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${env.DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} + docker push ${env.DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} + """ + } + } + } + + stage('Deploy Docker Image to TrueNAS') { + steps { + script { + // Verbind via SSH met TrueNAS en voer Docker-installatiecommando's uit sshagent([SSH_CREDENTIALS_ID]) { - // Command uitvoeren op de TrueNAS server via SSH sh """ ssh -o StrictHostKeyChecking=no ${SSH_USER}@${TRUENAS_HOST} << EOF - echo "Verbinding succesvol met TrueNAS" - hostname - exit + docker stop ${IMAGE_NAME} || true + docker rm ${IMAGE_NAME} || true + docker pull ${IMAGE_NAME}:${IMAGE_TAG} || echo "Local image will be used" + docker run -d --name ${IMAGE_NAME} -p 8080:8080 ${IMAGE_NAME}:${IMAGE_TAG} EOF """ } @@ -28,4 +71,12 @@ pipeline { } } } + + post { + always { + script { + echo "Pipeline execution completed." + } + } + } }