Avvio servizio / app mentre l'avvio avviene di solito con launchd e lancia i daemon controllati da launchctl. Dipende dall'app / eseguibile e dall'ambiente se tale daemon di avvio è possibile o meno. Molte app GUI richiedono una sessione di accesso e il metodo non funziona.
Dopo aver ispezionato il GoCD puoi scaricare un zip file o "OS X / macOS app "versione del server. Il server viene avviato con uno script di shell in entrambi i casi: esplicitamente nella versione zip o implicitamente con "Go Server.app/Contents/MacOS/go-server".
Vai con il file zip, decomprimilo e sposta la cartella risultante in / usr / local. Collega la cartella /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 demone di lancio con sudo nano /Library/LaunchDaemon/org.goserver.start.plist
e il contenuto
<?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>
Modifica proprietario e autorizzazioni del file, se necessario:
sudo chown root:wheel /Library/LaunchDaemons/org.goserver.start.plist
sudo chmod 644 /Library/LaunchDaemons/org.goserver.start.plist
Modifica /usr/local/go-server-16.10.0/server.sh in base alle tue esigenze. È necessario impostare una directory di registro diversa nella riga 85 o un file di registro verrà creato nella directory principale. Controlla altre variabili e percorsi (come $ JAVA_HOME, YOURKIT_PATH, $ PID_FILE ecc.) Nello script della shell e modificali in base alle tue esigenze / ambiente. Qui ha funzionato fuori dagli schemi, ma non l'ho testato a fondo.
Quindi avvia il daemon di avvio con:
sudo launchctl load /Library/LaunchDaemons/org.goserver.start.plist
Controlla /tmp/org.goserver.start.stderr per gli errori di launchd. Se il daemon di avvio funziona correttamente, è possibile rimuovere la parte:
<key>StandardErrorPath</key>
<string>/tmp/org.goserver.start.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/org.goserver.start.stdout</string>
dal plist.
Il metodo dovrebbe funzionare di conseguenza con il GoAgent. L'inizio dell'agente è fatto con agent.sh. Utilizza un secondo plist con un nome plist e nome etichetta diversi: org.goagent.start.plist / org.goagent.start.
Probabilmente devi aggiungere una condizione nel plist dell'agente in modo che l'agente venga avviato dopo l'esecuzione del server.
Ho provato lo stesso con l'app "OS X" ma non sono riuscito a eliminare tutti gli errori.