jenkinsFile fix
This commit is contained in:
128
Jenkinsfile
vendored
128
Jenkinsfile
vendored
@@ -1,76 +1,102 @@
|
||||
pipeline {
|
||||
// agent {
|
||||
// // dockerfile true
|
||||
// }
|
||||
|
||||
agent any
|
||||
tools {
|
||||
nodejs "nodejs"
|
||||
maven "mvn"
|
||||
jdk 'jdk-21'
|
||||
maven 'mvn'
|
||||
}
|
||||
|
||||
environment {
|
||||
DOCKER_IMAGE_NAME = "paypoint-backend"
|
||||
DOCKER_REGISTRY = "veenm" // Optioneel als je Docker image naar Docker Hub wilt pushen
|
||||
TRUENAS_HOST = "192.168.2.31:9000" // IP-adres van TrueNAS
|
||||
TRUENAS_SSH_USER = "jenkins" // Gebruiker voor SSH
|
||||
TRUENAS_SSH_KEY = credentials('ssh-true-nas') // Voeg een SSH-sleutel toe in Jenkins credentials
|
||||
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 = '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 {
|
||||
stage('Checkout') {
|
||||
stage('Checkout Code') {
|
||||
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 {
|
||||
script {
|
||||
// Installeer de Angular dependencies en bouw de app
|
||||
sh './mvnw package'
|
||||
// Bouw het Quarkus-project (assumeert Maven als build tool)
|
||||
sh './mvnw clean package -DskipTests'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// stage('Build Docker Image') {
|
||||
// steps {
|
||||
// script {
|
||||
// // Bouw het Docker image
|
||||
// sh 'systemctl start docker'
|
||||
// sh 'docker build -t weetikveel .'
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
stage('Build Docker Image') {
|
||||
steps {
|
||||
script {
|
||||
|
||||
// stage('Deploy to TrueNAS') {
|
||||
// steps {
|
||||
// script {
|
||||
// // SSH naar TrueNAS en stop de oude container (indien nodig)
|
||||
// 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.
|
||||
//
|
||||
// // Deploy het Docker image naar TrueNAS via SSH
|
||||
// sh """
|
||||
// ssh -i $TRUENAS_SSH_KEY $TRUENAS_SSH_USER@$TRUENAS_HOST '
|
||||
// docker pull $TRUENAS_HOST/$DOCKER_IMAGE_NAME &&
|
||||
// docker run -d -p 80:80 --name $DOCKER_IMAGE_NAME $TRUENAS_HOST/$DOCKER_IMAGE_NAME
|
||||
// '
|
||||
// """
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// 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 {
|
||||
success {
|
||||
echo "Deployment succesvol!"
|
||||
always {
|
||||
script {
|
||||
echo "Pipeline execution completed."
|
||||
}
|
||||
failure {
|
||||
echo "Er is een fout opgetreden tijdens de deployment."
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user