pipeline {
    agent any

    environment {
        REGISTRY = 'atl.vultrcr.com/vllm'
    }

    parameters {
        string(name: 'BASE_IMAGE', defaultValue: '', description: 'Base image to build from')
        string(name: 'NAME', defaultValue: 'vllm', description: 'Docker image name')
        string(name: 'TAG', defaultValue: 'latest', description: 'Docker image tag')
        string(name: 'PLATFORMS', defaultValue: 'linux/amd64,linux/arm64', description: 'Target platforms to build image for')
        string(name: 'GIT_REPO', defaultValue: '', description: 'Git repository URL (optional, uses workspace if empty)')
        string(name: 'GIT_BRANCH', defaultValue: 'master', description: 'Git branch to build')
    }

    stages {
        stage('Checkout') {
            steps {
                script {
                    if (params.GIT_REPO) {
                        git url: params.GIT_REPO, branch: params.GIT_BRANCH
                    }
                }
            }
        }

        stage('Build & Push') {
            steps {
                script {
                    def buildArg = params.BASE_IMAGE ? "--build-arg BASE_IMAGE=${params.BASE_IMAGE}" : ''
                    docker.withRegistry("https://${REGISTRY}", 'ATL_VCR_VLLM') {
                        sh """
                            docker buildx create --use --name vllm-builder || docker buildx use vllm-builder
                            docker buildx build \
                                --platform ${params.PLATFORMS} \
                                ${buildArg} \
                                -t ${REGISTRY}/${params.NAME}:${params.TAG} \
                                --push \
                                .
                        """
                    }
                }
            }
        }
    }

    post {
        always {
            sh "docker buildx rm vllm-builder || true"
        }
    }
}
