pipeline {
    agent any

    environment {
        REGISTRY = "10.77.77.41:5000/slalog"
        IMAGE_NAME = "sla-separacao"
        IMAGE_TAG = "${BUILD_NUMBER}"
        K8S_DIR = "k8s"
        K8S_NAMESPACE = "ci-cd"
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Build Docker Image') {
            steps {
                script {
                    sh """
                        docker build -t ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} .
                    """
                }
            }
        }

        stage('Push Docker Image') {
            steps {
                script {
                    sh """
                        docker push ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
                    """
                }
            }
        }

        stage('Deploy to Kubernetes') {
            steps {
                script {
                    sh """
                        export KUBECONFIG=/var/lib/jenkins/.kube/config
                        sed -i 's|image: .*sla-separacao:.*|image: ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}|' k8s/deployment.yaml
                        kubectl apply -n ${K8S_NAMESPACE} -f k8s/deployment.yaml
                        kubectl apply -n ${K8S_NAMESPACE} -f k8s/service.yaml
                        kubectl apply -n ${K8S_NAMESPACE} -f k8s/hpa.yaml
                        git checkout -- k8s/deployment.yaml
                        kubectl rollout status deployment/sla-separacao-deployment -n ${K8S_NAMESPACE} --timeout=180s
                    """
                }
            }
        }
    }

    post {
        success {
            echo "Deploy realizado com sucesso."
        }
        failure {
            echo "Falha no pipeline."
        }
    }
}
