pipeline { agent any environment { REGISTRY = 'atl.vultrcr.com/vllm' IMAGE_NAME = 'vllm-deepseek-v32-mtp' } parameters { string(name: 'IMAGE_TAG', defaultValue: 'v0.19.0', description: 'Docker image tag') string(name: 'GIT_REPO', defaultValue: 'https://sweetapi.com/biondizzle/vllm-deepseek-v32-mtp.git', 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 } // Otherwise use workspace already checked out } } } stage('Build') { steps { script { docker.withRegistry("https://${REGISTRY}", 'ATL_VCR_VLLM') { sh """ docker build \ --build-arg BASE_IMAGE=${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" } } }