Configurare Buildbot per MacOSX
Configurare uno slave Buildbot su Mac OS X
Installare buildbot-slave usando macports o installare buildbot da fink (se si usa una vecchia versione di buildbot/buildbot-slave occorre usare il comando buildbot invece di buildslave-2.6 nelle seguenti istruzioni).
Aggiungere l'utente buildbot:
Accertarsi di non avere un utente e un gruppo buildbot nel sistema
# Verifico gruppo con id 101 id -g -nr 101 # Verifico l'utente con id 101 id -u -nr 101
Se non si hanno il gruppo e l'utente buildbot, crearli
# Creare il gruppo buildbot con id 101 GROUP="buildbot" dscl . create /groups/$GROUP dscl . create /groups/$GROUP name $GROUP dscl . create /groups/$GROUP passwd "*" dscl . create /groups/$GROUP gid 101 # Creare l'utente buildbot con id 101 BUILDSLAVE_HOME=/var/lib/buildslave USER=buildbot mkdir -p $BUILDSLAVE_HOME dscl . -create /Users/$USER dscl . -create /Users/$USER RealName "Buildbot slave" dscl . -create /Users/$USER NFSHomeDirectory $BUILDSLAVE_HOME dscl . -create /Users/$USER UserShell /bin/bash dscl . -create /Users/$USER UniqueID 101 dscl . -create /Users/$USER PrimaryGroupID 101 chown 101:101 $BUILDSLAVE_HOME
Per nascondere l'utente:
defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add buildbot
Preparare l'ambiente:
sudo -i -u buildbot buildslave-2.6 create-slave --usepty=0 maria-slave hasky.askmonty.org:9989 <slavename> <passwd> bzr init-repo maria-slave/<slavedirectory> $EDITOR maria-slave/info/admin $EDITOR maria-slave/info/host logout
Si può avviare/arrestare manualmente Buildbot con questi comandi (meglio eseguirli per verificare che sia configurato correttamente):
Se si ha installato buildbot da fink, ci si accerti che l'utente buildbot utilizzi le impostazioni dell'ambiente. Il file .profile dovrebbe contenere le seguenti righe:
sudo - buildbot more .profile test -r /sw/bin/init.sh && . /sw/bin/init.sh
sudo -i -u buildbot
buildslave-2.6 start maria-slave
buildslave-2.6 stop maria-slave
logout
Per far partire buildbot all'avvio del sistema, occorre creare il file /Library/LaunchDaemons/net.sourceforge.buildbot.plist con il seguente contenuto (esempio tratto e modificato dal wiki di buildbot):
<?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>StandardOutPath</key> <string>twistd.log</string> <key>StandardErrorPath</key> <string>twistd-err.log</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/opt/local/bin:/sbin:/usr/sbin:/bin:/usr/bin</string> <key>PYTHONPATH</key> <string>/opt/local/lib/python2.5/site-packages</string> </dict> <key>GroupName</key> <string>daemon</string> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>Label</key> <string>net.sourceforge.buildbot.slave.test</string> <key>ProgramArguments</key> <array> <string>/opt/local/bin/buildslave-2.6</string> <string>start</string> <string>maria-slave</string> </array> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>buildbot</string> <key>WorkingDirectory</key> <string>/var/lib/buildslave/</string> </dict> </plist>
Se si ha installato buildbot da fink, si può modificare e copiare il file plist
$EDITOR /sw/share/doc/buildbot-py26/contrib/os-x/net.sourceforge.buildbot.slave.plist
Il file plist dopo le modifiche dovrebbe assomigliare a quanto segue:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd "> <plist version="1.0"> <dict> <key>Label</key> <string>net.sourceforge.buildbot.slave</string> <!-- Modificarlo con il nome utente che deve eseguire Buildbot --> <key>UserName</key> <string>buildbot</string> <!-- Modificarlo con la directory di lavoro di Buildbot --> <key>WorkingDirectory</key> <string>/Volumes/MiniHD2/ServiceData/buildslave/maria-slave</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/sw/bin:/sw/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string> </dict> <key>ProgramArguments</key> <array> <string>/sw/bin/twistd</string> <string>--nodaemon</string> <string>--python=buildbot.tac</string> <string>--logfile=buildbot.log</string> <string>--prefix=slave</string> </array> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> <key>RunAtLoad</key> <true/> </dict> </plist>
sudo cp /sw/share/doc/buildbot-py26/contrib/os-x/net.sourceforge.buildbot.slave.plist /Library/LaunchDaemons/
Nota: Occorre avviare buildslave via launchd, altrimenti si avranno diversi problemi. Per ulteriori dettagli, fare riferimento a Using Launchd