jenkinsFile fix
This commit is contained in:
132
Jenkinsfile
vendored
132
Jenkinsfile
vendored
@@ -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."
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user