Files
jobfindr/Jenkinsfile

103 lines
3.6 KiB
Groovy

pipeline {
agent any
tools {
jdk 'jdk-21'
maven 'mvn 3.9.9'
}
environment {
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_REPO = 'veenm' // Naam van de Docker-image
IMAGE_NAME = 'jobfindr-jvm' // 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 {
stage('Checkout Code') {
steps {
checkout scm
}
}
stage('Build Quarkus Project') {
steps {
script {
// 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 'ls src/main'
sh """
docker build -t ${IMAGE_REPO}/${IMAGE_NAME}:${IMAGE_TAG} -f src/main/resources/Dockerfile.jvm --platform linux/amd64 .
"""
}
}
}
stage('Push Docker Image') {
steps {
script {
// Push de Docker-image naar een Docker Registry
sh """
docker push ${IMAGE_REPO}/${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]) {
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 {
always {
script {
echo "Pipeline execution completed."
}
}
}
}