El servicio / lanzamiento de la aplicación durante el arranque se realiza generalmente con los demonios launchd y launch controlados por launchctl. Depende de la aplicación / ejecutable y del entorno si tal demonio de lanzamiento es posible o no. Muchas aplicaciones GUI requieren una sesión de inicio de sesión y el método no funciona.
Después de inspeccionar GoCD, puede descargar un zip archivo o un "OS X / macOS app "versión del servidor. El servidor se inicia con un script de shell en ambos casos: ya sea explícitamente en la versión zip o implícitamente con "Go Server.app/Contents/MacOS/go-server".
Vaya con el archivo zip, descomprímalo y mueva la carpeta resultante a / usr / local. Enlace la carpeta /usr/local/go-server-16.10.0 a / usr / local /:
ln -s /usr/local/go-server-16.10.0 /usr/local/go-server
Crea un demonio de lanzamiento con sudo nano /Library/LaunchDaemon/org.goserver.start.plist
y el contenido
<?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>org.goserver.start</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/usr/local/go-server/server.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/org.goserver.start.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/org.goserver.start.stdout</string>
</dict>
</plist>
Cambie el propietario y los permisos del archivo si es necesario:
sudo chown root:wheel /Library/LaunchDaemons/org.goserver.start.plist
sudo chmod 644 /Library/LaunchDaemons/org.goserver.start.plist
Modifique /usr/local/go-server-16.10.0/server.sh según sus necesidades. Debe configurar un directorio de registro diferente en la línea 85 o se creará un archivo de registro en el directorio raíz. Verifique otras variables y rutas (como $ JAVA_HOME, YOURKIT_PATH, $ PID_FILE, etc.) en el script de shell y modifíquelas según sus necesidades / entorno. Aquí funcionó de manera inmediata, pero no lo probé a fondo.
Luego inicia el demonio de lanzamiento con:
sudo launchctl load /Library/LaunchDaemons/org.goserver.start.plist
Compruebe /tmp/org.goserver.start.stderr para ver los errores de lanzamiento. Si el daemon de inicio funciona bien, puede eliminar la parte:
<key>StandardErrorPath</key>
<string>/tmp/org.goserver.start.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/org.goserver.start.stdout</string>
de la lista.
El método debería funcionar de acuerdo con el GoAgent. El inicio del agente se realiza con agent.sh. Utilice una segunda lista con un nombre diferente de lista y etiqueta, por supuesto: org.goagent.start.plist / org.goagent.start.
Probablemente tenga que agregar una condición en la lista del agente para que el agente se inicie después de que el servidor se esté ejecutando.
Intenté lo mismo con la aplicación "OS X" pero no logré eliminar todos los errores.