0 votos

Jenkinsfile no reconoce la papelera local

Estoy tratando de ejecutar fastlane comandos utilizando Jenkinsfile en el Mac mini.

Si corro /usr/local/bin/fastlane -v muestra la salida correcta. pero si solo pruebo con fastlane -v entonces obtengo

fastlane: command not found

fastlane -v funciona en el esclavo Jenkins si sólo ssh y ejecutar.

Para depurar esto traté de ejecutar echo $PATH a través de Jenkinsfile, consiguió

/usr/bin:/bin:/usr/sbin:/sbin

Si hago ssh a jenkins Slave como jenkins usuario y ejecución echo $PATH Me sale

/Users/jenkins/.fastlane/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin

¿A qué se debe esta diferencia?

Esto es plist para el agente Jenkins.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jenkins.ci</string>
        <key>UserName</key>
        <string>jenkins</string>
        <key>SessionCreate</key>
        <true/>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/java</string>
          <string>-Djava.awt.headless=true</string>
      <string>-jar</string>
      <string>/Users/jenkins/agent.jar</string>
          <string>-jnlpUrl</string>
          <string>http://jenkins.example.com:8080/computer/jenkins2-slave3/slave-agent.jnlp</string>
          <string>-secret</string>
          <string>****************************</string>
          <string>-workDir</string>
          <string>/Users/jenkins/jenkins_slave/</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
        <key>KeepAlive</key>
        <true/>
    <key>StandardErrorPath</key>
    <string>/Users/jenkins/error.log</string>
    <key>StandardOutPath</key>
    <string>/Users/jenkins/stdout.log</string>
</dict>
</plist>

1voto

yoliho Puntos 340

Si se ejecuta desde launchd el SO ejecuta el comando directamente y no a través de ningún shell. Además en este caso se está ejecutando fastlane como Root.

Si desde la terminal o ssh entonces inicias un shell, abasteciéndote de tus archivos init por ejemplo .zshenv .zshrc - Tus adiciones a la ruta /Users/jenkins/.fastlane/bin:/usr/local/bin: estarán en uno de esos archivos del shell.

Esto es como ejecutar desde crontab en otros Unixes. Hay muy poco entorno.

Así que las soluciones incluyen cualquier combinación de estas

  1. utilizar las rutas completas de los ejecutables,
  2. hacer que launchd ejecute un shell script que configure el entorno y luego llame a los ejecutables
  3. añadir variables de entorno al archivo .plist (ver clave EnvironmentVariables) (creo que PATH no es configurable allí, pero podría estar equivocado).

También en este caso añada el nombre de usuario al .plist vea la clave UserName.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X