Jenkinsfile update
This commit is contained in:
73
Jenkinsfile
vendored
73
Jenkinsfile
vendored
@@ -2,25 +2,68 @@ pipeline {
|
|||||||
agent any
|
agent any
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
// Definieer de SSH credentials ID die in Jenkins is opgeslagen
|
SSH_CREDENTIALS_ID = 'ssh-true-nas' // ID van de SSH-sleutel in Jenkins
|
||||||
SSH_CREDENTIALS_ID = 'ssh-true-nas'
|
TRUENAS_HOST = '192.168.2.31' // IP-adres of hostname van TrueNAS
|
||||||
TRUENAS_HOST = '192.168.2.31' // Pas aan naar het IP-adres van de TrueNAS server
|
SSH_USER = 'jenkins' // SSH-gebruiker voor TrueNAS
|
||||||
SSH_USER = 'jenkins' // Pas aan naar de SSH-gebruikersnaam
|
IMAGE_NAME = 'jobFindr' // Naam van de Docker-image
|
||||||
|
IMAGE_TAG = 'latest' // Docker-tag
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
stage('Connect to TrueNAS') {
|
stage('Checkout Code') {
|
||||||
|
steps {
|
||||||
|
checkout scm
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build Quarkus Project') {
|
||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
echo "hallo"
|
// Bouw het Quarkus-project (assumeert Maven als build tool)
|
||||||
// Gebruik SSH-agent om een verbinding te maken
|
sh './mvnw clean package -DskipTests'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build Docker Image') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
// Maak een Docker-image gebaseerd op de Dockerfile
|
||||||
|
sh """
|
||||||
|
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Push Docker Image (Optional)') {
|
||||||
|
when {
|
||||||
|
expression {
|
||||||
|
return env.DOCKER_REGISTRY != null && env.DOCKER_REGISTRY.trim() != ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
// Push de Docker-image naar een Docker Registry
|
||||||
|
sh """
|
||||||
|
docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${env.DOCKER_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
|
||||||
|
docker push ${env.DOCKER_REGISTRY}/${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]) {
|
sshagent([SSH_CREDENTIALS_ID]) {
|
||||||
// Command uitvoeren op de TrueNAS server via SSH
|
|
||||||
sh """
|
sh """
|
||||||
ssh -o StrictHostKeyChecking=no ${SSH_USER}@${TRUENAS_HOST} << EOF
|
ssh -o StrictHostKeyChecking=no ${SSH_USER}@${TRUENAS_HOST} << EOF
|
||||||
echo "Verbinding succesvol met TrueNAS"
|
docker stop ${IMAGE_NAME} || true
|
||||||
hostname
|
docker rm ${IMAGE_NAME} || true
|
||||||
exit
|
docker pull ${IMAGE_NAME}:${IMAGE_TAG} || echo "Local image will be used"
|
||||||
|
docker run -d --name ${IMAGE_NAME} -p 8080:8080 ${IMAGE_NAME}:${IMAGE_TAG}
|
||||||
EOF
|
EOF
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
@@ -28,4 +71,12 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
script {
|
||||||
|
echo "Pipeline execution completed."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user