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.

Trabajo de Jenkins para ejecutar consulta SOQL

Estoy tratando de hacer que un trabajo de Jenkins ejecute comandos sfdx force:data:soql:query para migrar conjuntos de datos de configuración entre nuestra organización de producción y nuestros entornos de prueba después de una actualización. Algunas configuraciones no persisten después de una actualización, por lo que necesitamos una forma de mover esos datos.

La ejecución de las consultas desde la línea de comandos en el servidor de Jenkins funciona según lo esperado, sin embargo, el trabajo falla con el siguiente error:

‘\”C:\Program\”‘ no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.
La etapa de construcción ‘Ejecutar shell’ marcó la construcción como fallida.

El trabajo realiza tres acciones: se autentica en el DevHub, muestra una lista de las organizaciones conectadas y luego realiza una consulta SQOL para imprimir algunos datos, exactamente 16 líneas. Aquí están los comandos en el script de shell del trabajo:

sfdx force:auth:jwt:grant -i ${CONNECTED_APP_CONSUMER_KEY} -u ${DEV_HUB} -f ${JENKINS_HOME}/certs/prod/server.key -r […] -a DevHub
sfdx force:org:list
sfdx force:data:soql:query -u ${DEV_HUB} -q “SELECT Id, Name FROM […nombre de tabla…]” -r human

Estoy completamente desconcertado por qué está sucediendo esto. Una vez más, ejecutar el comando SOQL directamente en el servidor a través de PowerShell o Command Line funciona según lo esperado. Agradecería cualquier ayuda con esto.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la ruta hacia la herramienta Salesforce CLI (sfdx) en el script de shell. El mensaje de error indica que el sistema está intentando ejecutar un comando con una ruta que contiene espacios, lo cual puede causar problemas con PowerShell o la línea de comandos.

    Para solucionar esto, asegúrate de que la ruta hacia la herramienta sfdx CLI esté correctamente entre comillas en el script de shell. Encierra la ruta entre comillas dobles si contiene espacios, o utiliza la ruta completa hacia el ejecutable sfdx.

    Por ejemplo:

    "sfdx force:data:soql:query -u ${DEV_HUB} -q \"SELECT Id, Name FROM [...tablename...]\" -r human"
    

    o

    "C:/Program Files/sfdx/bin/sfdx force:data:soql:query -u ${DEV_HUB} -q \"SELECT Id, Name FROM [...tablename...]\" -r human"
    

    Además, verifica que el trabajo de Jenkins tenga permisos para ejecutar scripts de shell en el servidor. Asegúrate de que el usuario de Jenkins tenga suficientes privilegios para acceder al Salesforce CLI y ejecutar los comandos necesarios.

Comments are closed.