pipeline {
    agent any

    environment {
        REGISTRY = 'atl.vultrcr.com/vllm'
        IMAGE_NAME = 'vllm-with-lmcache'
    }

    parameters {
        string(name: 'IMAGE_TAG', defaultValue: 'v0.19.0-cu130', description: 'Docker image tag')
        string(name: 'GIT_REPO', defaultValue: 'https://sweetapi.com/biondizzle/vllm-with-lmcache.git', description: 'Git repository URL (optional, uses workspace if empty)')
        string(name: 'GIT_BRANCH', defaultValue: 'master', description: 'Git branch to build')
        string(name: 'BASE_IMAGE', defaultValue: 'vllm/vllm-openai:v0.19.0-cu130', description: 'Base Docker image')
    }

    stages {
        stage('Checkout') {
            steps {
                script {
                    if (params.GIT_REPO) {
                        git url: params.GIT_REPO, branch: params.GIT_BRANCH
                    }
                    // Otherwise use workspace already checked out
                }
            }
        }

        stage('Build') {
            steps {
                script {
                    docker.withRegistry("https://${REGISTRY}", 'ATL_VCR_VLLM') {
                        sh """
                            docker build \
                                --build-arg BASE_IMAGE=${params.BASE_IMAGE} \
                                -t ${REGISTRY}/${IMAGE_NAME}:${params.IMAGE_TAG} \
                                .
                        """
                    }
                }
            }
        }

        stage('Push') {
            steps {
                script {
                    docker.withRegistry("https://${REGISTRY}", 'ATL_VCR_VLLM') {
                        docker.image("${REGISTRY}/${IMAGE_NAME}:${params.IMAGE_TAG}").push()
                    }
                }
            }
        }
    }

    post {
        success {
            echo "✅ Image pushed: ${REGISTRY}/${IMAGE_NAME}:${params.IMAGE_TAG}"
        }
        failure {
            echo "❌ Build failed"
        }
    }
}
