pipeline { agent any tools { nodejs "nodejs" dockerTool "docker" } environment { DOCKER_IMAGE_NAME = "weetikveel" 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 } stages { stage('Checkout') { steps { git 'https://git.melvanveen.nl/veenm/weetikveel.git' // Vervang door jouw repository URL } } stage('Build Angular') { steps { script { // Installeer de Angular dependencies en bouw de app sh 'npm install' sh 'npm run build --prod' } } } stage('Build Docker Image') { steps { script { // Bouw het Docker image sh 'sudo systemctl start docker' sh 'docker build -t weetikveel .' } } } 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 ' """ } } } } post { success { echo "Deployment succesvol!" } failure { echo "Er is een fout opgetreden tijdens de deployment." } } }