Files
weetikveel/Jenkinsfile
2025-01-05 20:49:22 +01:00

75 lines
2.5 KiB
Groovy

pipeline {
agent any
tools {
nodejs "nodejs"
docker "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 'docker build -t $DOCKER_IMAGE_NAME .'
}
}
}
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."
}
}
}