tutorial read parameter example def jenkins jenkins-workflow jenkins-pipeline

read - jenkinsfile java



Obtenga una ruta de acceso absoluta al directorio del espacio de trabajo en el plugin Jenkins Pipeline (3)

Actualmente estoy haciendo una evaluación sobre el plugin Jenkins Pipeline (anteriormente conocido como plugin Workflow). Al leer la documentación descubrí que actualmente no puedo recuperar la ruta del espacio de trabajo usando env.WORKSPACE :

Las siguientes variables no están disponibles actualmente dentro de un script de flujo de trabajo:

NODE_LABELS

ESPACIO DE TRABAJO

Variables específicas de SCM como SVN_REVISION

¿Hay alguna otra manera de obtener la ruta absoluta al espacio de trabajo actual? Necesito que se ejecute una prueba que a su vez obtiene algún parámetro (ruta absoluta a algún archivo ejecutable). Ya traté de usar el new File("").absolutePath() @NonCPS new File("").absolutePath() dentro de una sección @NonCPS pero parece que las cosas que no son de CPS siempre se ejecutan en el maestro.

¿Alguien tiene una idea de cómo obtener esta ruta sin ejecutar un script por lotes que almacena la ruta en algún archivo que luego se puede leer de nuevo?


A partir de la versión 2.5 del complemento de procesos y nodos de canalización (un componente del complemento Pipeline, instalado por defecto), la variable de entorno WORKSPACE vuelve a estar disponible. Esta versión fue lanzada el 2016-09-23, por lo que debería estar disponible en todas las instancias actualizadas de Jenkins.


Cuando está utilizando un script, el concepto de espacio de trabajo no tiene sentido. Su mejor opción es usar readFile para leer el archivo en una cadena, luego pasar esa cadena a su biblioteca para su procesamiento. El método pwd () no puede ayudarle porque se ejecuta en el maestro y sus archivos están almacenados en el nodo.


Nota : esta solución solo funciona si los esclavos tienen la misma estructura de directorio que el maestro. pwd() devolverá el directorio de espacio de trabajo en el maestro debido a JENKINS-33511 .

Solía ​​hacerlo usando la funcionalidad pwd() del plugin de tubería. Por lo tanto, si necesita obtener un espacio de trabajo en esclavo, puede hacer algo así:

node(''label''){ //now you are on slave labeled with ''label'' def workspace = pwd() //${workspace} will now contain an absolute path to job workspace on slave }