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 ''' 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 STATUS=$(curl -s -o /dev/null -w "%{http_code}" -L http://localhost:8088/) if [ "$STATUS" = "200" ] || [ "$STATUS" = "302" ]; then echo "✅ Platform responding on :8088 (HTTP $STATUS)" else echo "❌ Health check failed — got HTTP $STATUS" 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' } } }