85 lines
3.1 KiB
Groovy
85 lines
3.1 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
stages {
|
|
stage('Checkout') {
|
|
steps {
|
|
echo '✅ Code checked out from gitea'
|
|
}
|
|
}
|
|
|
|
stage('Build Docker Image') {
|
|
steps {
|
|
sh '''
|
|
docker build -t management-platform:latest ./platform/
|
|
echo "✅ Docker image built"
|
|
docker images management-platform:latest --format "Size: {{.Size}}"
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Deploy to Server 1') {
|
|
steps {
|
|
sh '''
|
|
# Sync Python modules to host path — docker run mounts this OVER the image
|
|
# (new app.py in the image imports modules.sites etc.; host must stay in sync)
|
|
mkdir -p /root/management-platform/modules
|
|
cp -f ./platform/modules/*.py /root/management-platform/modules/
|
|
echo "✅ Synced platform/modules → /root/management-platform/modules"
|
|
|
|
docker stop management-platform 2>/dev/null || true
|
|
docker rm management-platform 2>/dev/null || true
|
|
|
|
docker run -d \
|
|
--name management-platform \
|
|
--restart unless-stopped \
|
|
-p 8088:5000 \
|
|
-e HOSTNAME=vmi3024229 \
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
-v /root:/root \
|
|
-v /etc/passwd:/etc/passwd:ro \
|
|
-v /etc/shadow:/etc/shadow:ro \
|
|
-v /root/management-platform/config.py:/app/config.py:ro \
|
|
-v /root/management-platform/modules:/app/modules:ro \
|
|
management-platform:latest
|
|
|
|
sleep 5
|
|
|
|
if docker ps | grep -q management-platform; then
|
|
echo "✅ Deployed successfully"
|
|
else
|
|
echo "❌ Container failed to start"
|
|
docker logs management-platform --tail=20
|
|
exit 1
|
|
fi
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Health Check') {
|
|
steps {
|
|
sh '''
|
|
sleep 3
|
|
# /login is public; / redirects and may not satisfy curl -f in all setups
|
|
if curl -sf http://localhost:8088/login 2>/dev/null; then
|
|
echo "✅ Platform responding on :8088"
|
|
else
|
|
echo "❌ Health check failed — container logs:"
|
|
docker logs management-platform --tail=40 2>/dev/null || true
|
|
exit 1
|
|
fi
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
echo '✅ Pipeline succeeded — platform deployed'
|
|
}
|
|
failure {
|
|
echo '❌ Pipeline failed — check logs'
|
|
sh 'docker logs management-platform --tail=30 2>/dev/null || true'
|
|
}
|
|
}
|
|
} |