91 lines
3.2 KiB
Groovy
91 lines
3.2 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'
|
|
}
|
|
|
|
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 (Optional)') {
|
|
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."
|
|
}
|
|
}
|
|
}
|
|
}
|