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 '''
                    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 \
                        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=$(docker exec management-platform curl -s -o /dev/null -w "%{http_code}" http://localhost:5000/)
                    if [ "$STATUS" = "200" ] || [ "$STATUS" = "302" ]; then
                        echo "✅ Platform responding (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'
        }
    }
}