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}"
        }
    }
}
