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

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.