macos - jenkins en Mac, PATH no está configurado correctamente, no/usr/local/bin
homebrew launchd (4)
Recientemente instalé Jenkins, usando Homebrew. También instalé Mercurial usando Homebrew.
Puedo clonar con éxito un repositorio de hg, desde Terminal. Pero si intento hacer lo mismo como parte de un trabajo en Jenkins, falla.
Entonces, por trabajo, le dije a Jenkins que ejecutara un script de shell echo $PATH
. Efectivamente, la ruta /usr/local/bin
no está allí. Si ejecuto el mismo comando desde la Terminal, está ahí.
Entonces, ¿cuál es la mejor manera de modificar PATH para que Jenkins esté utilizando el mismo PATH que estoy usando, cuando lo echo de Terminal?
Tenga en cuenta que Jenkins se está ejecutando desde la misma cuenta de usuario con la que estoy conectado realizando estas pruebas, por lo que no puedo entender por qué sucede esto.
Descubrí que incluso configurar la variable de entorno PATH para el nodo no funcionaba para la instalación de hombrew Mercurial. Se establecería la ruta, pero solo para la fase de compilación de guiones, no para la fase de pago de VCS. Esto es lo que terminé haciendo.
- Vaya a
Manage Jenkins -> Configure System
- Agregue una nueva instalación Mercurial
- Llámalo como quieras (nombré a mi build-mac)
- Para el
Installation Directory
pongo/usr/local
- El parámetro
Executable
estaba preestablecido enINSTALLATION/bin/hg
, así que simplemente lo dejé así. - Todo lo demás aquí puede dejarse en blanco
- Entre en su trabajo y edite la configuración
- En
Source Code Management
configure laMercurial Version
en la instalación mercurial que acaba de agregar. - Salvar
- $$$
Espero que ayude a cualquier otra persona a encontrarse con este mismo problema, ahora que no tenemos permitido (por defecto de todos modos) hacer nada dentro de /usr/bin
. Previamente habría enlazado allí hmm, pero ahora con la nueva característica de "Protección de Integridad del Sistema", eso ya no es tan trivial de la tarea, y aún más difícil si su Mac esclavo no tiene cabeza.
En su archivo launchd .plist para Jenkins, puede establecer la variable de entorno PATH utilizando lo siguiente:
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>(insert your path value here)</string>
</dict>
Eso debería establecer el CAMINO a lo que necesites.
Por alguna razón, Jenkins no mantiene / usr / local / bin en la RUTA cuando se conecta a un esclavo.
Puedes agregarlo a la RUTA ya sea por
- Agregar una variable de entorno en la Configuración de nodo, o
Agregar un archivo .bashrc en la carpeta del usuario con
PATH="/usr/local/bin:${PATH}"
Puede establecer PATH en el archivo launchd.conf. Mira here para más detalles. Tenga en cuenta que man launchctl
dice que ''los comandos se pueden almacenar en $ HOME / .launchd.conf o /etc/launchd.conf para leerlos en el momento en que launchd starts'', por lo que probablemente pueda crear ''.launchd.conf'' en su casa directorio y las instrucciones de uso del enlace con este archivo. Pero, por lo que sé en el archivo launchd.conf, no puede agregar el directorio a PATH, solo puede reescribir PATH.
También puede ver here la solución usando el directorio /etc/paths.d