es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pase la salida del script de PowerShell a los parámetros de Jenkins.

Estoy tratando de obtener una lista de plantillas de Vsphere y usarlas como parámetros en Jenkins.
He intentado usar una función y ejecutar el comando de PowerShell.

def findtemplates() {
  def $vmTemplate = "powershell -command 'Connect-VIServer -server server -User user -Password pass -Force; Get-Template | select name'"
    return $vmTemplate
}

Y en la sección de parámetros:

parameters {
    choice(name: 'Template', choices: findtemplates(), description: 'test')
}

Pero no funciona.
Se agradecería cualquier ayuda.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay algunas cosas que podrían estar causando el problema que estás experimentando. Una posibilidad es que la función findtemplates() no esté devolviendo la salida esperada. Puede que quieras intentar ejecutar el comando powershell fuera de la función y confirmar que devuelve una lista de plantillas de Vsphere.

    Otra posibilidad es que la sintaxis utilizada en el parámetro choice de Jenkins sea incorrecta. Específicamente, el parámetro choices debería ser una lista de cadenas o un cierre que devuelve una lista de cadenas. En tu caso, es posible que necesites modificar la función findtemplates() para convertir la salida del comando en una lista de cadenas.

    Aquí tienes un ejemplo de cómo podrías modificar la función findtemplates() para que devuelva una lista de nombres de plantillas:

    def findtemplates() {
        def vmTemplate = sh(script: 'powershell -command "Connect-VIServer -server servidor -User usuario -Password contraseña -Force; Get-Template | Select-Object -ExpandProperty Name"', returnStdout: true)
        return vmTemplate.tokenize('\n').findAll{ it.trim() } // dividir la salida en una lista de cadenas y eliminar cualquier valor vacío
    }
    

    En la sección parameters, luego puedes llamar a la función findtemplates() para llenar el parámetro choices:

    parameters {
        choice(name: 'Template', choices: findtemplates(), description: 'Selecciona una plantilla de Vsphere que usar.')
    }
    

    Espero que esto ayude. Déjame saber si tienes alguna otra pregunta.

Comments are closed.