pipeline { agent any parameters { string(name: 'HERMES_VERSION', defaultValue: 'v0.7.0', description: 'Hermes Agent version to install (e.g. v0.7.0)') string(name: 'VULTR_REGION', defaultValue: 'ewr', description: 'Vultr region for the build instance') string(name: 'VULTR_PLAN', defaultValue: 'vc2-2c-4gb', description: 'Vultr plan for the build instance') string(name: 'VULTR_OS_ID', defaultValue: '2284', description: 'Vultr OS ID (2284 = Ubuntu 24.04 LTS)') } stages { stage('Validate') { steps { script { if (!params.HERMES_VERSION?.trim()) { error "HERMES_VERSION parameter is required." } } } } stage('Checkout') { steps { checkout([ $class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[ url: 'https://git.vultropenclaw.com/vultr/hermes-agent-marketplace-packer.git' ]] ]) } } stage('Check Packer') { steps { sh 'packer --version' } } stage('Packer Init') { steps { sh 'packer init hermes.pkr.hcl' } } stage('Packer Build') { steps { withCredentials([string( credentialsId: 'VULTR_API_KEY', variable: 'VULTR_API_KEY' )]) { sh """ packer build \ -var 'vultr_api_key=${VULTR_API_KEY}' \ -var 'hermes_version=${params.HERMES_VERSION}' \ -var 'region_id=${params.VULTR_REGION}' \ -var 'plan_id=${params.VULTR_PLAN}' \ -var 'os_id=${params.VULTR_OS_ID}' \ -color=false \ hermes.pkr.hcl """ } } } } post { success { echo "✅ Snapshot built for Hermes Agent ${params.HERMES_VERSION}" echo "✅ Region: ${params.VULTR_REGION} Plan: ${params.VULTR_PLAN}" } failure { echo "❌ Packer build failed for Hermes Agent ${params.HERMES_VERSION}" } } }