jenkinsFile fix

This commit is contained in:
2025-03-04 22:12:34 +01:00
parent 7ae8a5f1c1
commit 00a5975e4b

132
Jenkinsfile vendored
View File

@@ -1,76 +1,102 @@
pipeline { pipeline {
// agent { agent any
// // dockerfile true
// }
tools { tools {
nodejs "nodejs" jdk 'jdk-21'
maven "mvn" maven 'mvn'
} }
environment { environment {
DOCKER_IMAGE_NAME = "paypoint-backend" SSH_CREDENTIALS_ID = 'ssh-true-nas' // ID van de SSH-sleutel in Jenkins
DOCKER_REGISTRY = "veenm" // Optioneel als je Docker image naar Docker Hub wilt pushen TRUENAS_HOST = '192.168.2.31' // IP-adres of hostname van TrueNAS
TRUENAS_HOST = "192.168.2.31:9000" // IP-adres van TrueNAS SSH_USER = 'jenkins' // SSH-gebruiker voor TrueNAS
TRUENAS_SSH_USER = "jenkins" // Gebruiker voor SSH IMAGE_REPO = 'veenm' // Naam van de Docker-image
TRUENAS_SSH_KEY = credentials('ssh-true-nas') // Voeg een SSH-sleutel toe in Jenkins credentials IMAGE_NAME = 'paypoint-backend' // Naam van de Docker-image
IMAGE_TAG = 'latest'
MAILER_FROM= credentials('MAILER_FROM')
MAILER_HOST= credentials('MAILER_HOST')
MAILER_PORT= credentials('MAILER_PORT')
MAILER_USERNAME= credentials('MAILER_USERNAME')
MAILER_PASSWORD= credentials('MAILER_PASSWORD')
DB_HOST= credentials('DB_HOST')
DB_PORT= credentials('DB_PORT')
DB_USERNAME= credentials('DB_USERNAME')
DB_PASSWORD= credentials('DB_PASSWORD')
CORS_ORIGINS= credentials('CORS_ORIGINS')
} }
stages { stages {
stage('Checkout') { stage('Checkout Code') {
steps { steps {
git 'https://git.melvanveen.nl/veenm/paypoint-backend.git' // Vervang door jouw repository URL checkout scm
} }
} }
stage('Build Quarkus') { stage('Build Quarkus Project') {
steps { steps {
script { script {
// Installeer de Angular dependencies en bouw de app // Bouw het Quarkus-project (assumeert Maven als build tool)
sh './mvnw package' sh './mvnw clean package -DskipTests'
} }
} }
} }
// stage('Build Docker Image') { stage('Build Docker Image') {
// steps { steps {
// script { script {
// // Bouw het Docker image
// sh 'systemctl start docker'
// sh 'docker build -t weetikveel .'
// }
// }
// }
// stage('Deploy to TrueNAS') { // Maak een Docker-image gebaseerd op de Dockerfile
// steps { sh 'ls src/main'
// script { sh """
// // SSH naar TrueNAS en stop de oude container (indien nodig) docker build -t ${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG} -f src/main/resources/Dockerfile.jvm --platform linux/amd64 .
// sh """ """
// ssh -i $TRUENAS_SSH_KEY $TRUENAS_SSH_USER@$TRUENAS_HOST 'docker stop $DOCKER_IMAGE_NAME || true && docker rm $DOCKER_IMAGE_NAME || true' }
// """ }
// // Push het Docker image naar TrueNAS (optioneel als je een registry gebruikt) }
// sh 'docker tag $DOCKER_IMAGE_NAME $TRUENAS_HOST/$DOCKER_IMAGE_NAME'
// sh 'docker push $TRUENAS_HOST/$DOCKER_IMAGE_NAME' // Alleen als je Docker Hub gebruikt, of een lokaal registry. stage('Push Docker Image') {
// steps {
// // Deploy het Docker image naar TrueNAS via SSH script {
// sh """ // Push de Docker-image naar een Docker Registry
// ssh -i $TRUENAS_SSH_KEY $TRUENAS_SSH_USER@$TRUENAS_HOST ' sh """
// docker pull $TRUENAS_HOST/$DOCKER_IMAGE_NAME && docker push ${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG}
// docker run -d -p 80:80 --name $DOCKER_IMAGE_NAME $TRUENAS_HOST/$DOCKER_IMAGE_NAME """
// ' }
// """ }
// } }
// }
// } stage('Deploy Docker Image to TrueNAS') {
steps {
script {
// Verbind via SSH met TrueNAS en voer Docker-installatiecommando's uit
sshagent([SSH_CREDENTIALS_ID]) {
sh """
ssh -o StrictHostKeyChecking=no ${SSH_USER}@${TRUENAS_HOST} << EOF
sudo docker stop ${IMAGE_NAME} || true
sudo docker rm ${IMAGE_NAME} || true
sudo docker pull ${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG} || echo "Local image will be used"
sudo docker run -d --name ${IMAGE_NAME} -p 8080:8080 -e MAILER_FROM=$env.MAILER_FROM \
-e MAILER_HOST='$env.MAILER_HOST' \
-e MAILER_PORT='$env.MAILER_PORT' \
-e MAILER_USERNAME='$env.MAILER_USERNAME' \
-e MAILER_PASSWORD='$env.MAILER_PASSWORD' \
-e DB_HOST='$env.DB_HOST' \
-e DB_PORT='$env.DB_PORT' \
-e DB_USERNAME='$env.DB_USERNAME' \
-e DB_PASSWORD='$env.DB_PASSWORD' \
${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG}
"""
}
}
}
}
} }
post { post {
success { always {
echo "Deployment succesvol!" script {
} echo "Pipeline execution completed."
failure { }
echo "Er is een fout opgetreden tijdens de deployment."
} }
} }
} }