El trabajo de Jenkins Pipeline no puede encontrar el script debido a la ruta @tmp que se está creando

Estoy escribiendo un trabajo en línea que llamará a otro script para ejecutar. El Jenkinsfile y el script existen en el mismo directory y, sin embargo, el trabajo no puede encontrar el script para ejecutar.

Este es el fragment de script relevante;

stage ('Update') { try { dir('jenkins/pipeline/update-jenkins-plugins-ppln') { sh 'ls -l' sh 'update-plugins.sh' } } 

que devuelve el siguiente error;

 [update-jenkins-plugins-ppln] Running shell script + ls -l total 8 -rw-r--r-- 1 jenkins jenkins 2441 Dec 20 09:34 Jenkinsfile -rwxr-xr-x 1 jenkins jenkins 506 Dec 19 14:06 update-plugins.sh [Pipeline] sh [update-jenkins-plugins-ppln] Running shell script + update-plugins.sh /var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/[email protected]/durable-11cefdd0/script.sh: 2: /var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/[email protected]/durable-11cefdd0/script.sh: update-plugins.sh: not found 

Como puede ver, la ruta que estoy usando es correcta porque de acuerdo con el ls el file que necesito update-plugins.sh está en el directory al que me he dirigido. Sin embargo, por alguna razón, cuando realmente busca el guión, Jenkins agrega @tmp/durable-8d48734f/script.sh en la ruta.

Varios solución de problemas:

  • Leí que tienes que pagar de nuevo en la sucursal, incluso si ya estás revisando para get el Jenkinsfile, entonces yo sí.
  • He entrado en el recuadro de Jenkins para comprobarlo y sí, el guión está allí.

¿Por qué Jenkins agrega el bit @tmp y hay alguna forma de prevenir este comportamiento?

Supongo que tu pwd no está en PATH así que tienes que llamarlo así: sh './update-plugins.sh'

¿Ha intentado utilizar la variable de entorno de espacio de trabajo jenkins WORKSPACE (ruta absoluta del área de trabajo)? Con eso, tu línea se vería así:

 sh '${WORKSPACE}/jenkins/pipeline/update-jenkins-plugins-ppln/update-plugins.sh'