Revision: 8e4da0e0754a
Author: Iustin Pop <[email protected]>
Date: Tue Jan 29 07:42:05 2013
Log: Add external buildbot wiki
http://code.google.com/p/ganeti/source/detail?r=8e4da0e0754a&repo=wiki
Added:
/BuildBot.wiki
=======================================
--- /dev/null
+++ /BuildBot.wiki Tue Jan 29 07:42:05 2013
@@ -0,0 +1,143 @@
+#summary Setup of the public buildbot infrastructure.
+
+= Introduction =
+
+Thanks to grnet, we have a publicly accessible (read-only)
+[http://http://trac.buildbot.net/ buildbot] infrastructure.
+
+= Details =
+
+
+As usual in buildbot, there are two parts:
+
+ * the master machine, publicly accessible over HTTP
+ * the slaves, which only need to talk to the master
+
+Setup of the master machine is straightforward (it only needs to run
+buildbot), with the note that the global buildbot configuration is
+non-trivial.
+
+The setup of the slaves, however, is more complex. Each slave needs to
+be able to build Ganeti, with all the required dependencies, which are
+“non-trivial” so to say.
+
+Currently we have the following slaves defined:
+
+ * debian squeeze 64bit
+ * debian wheezy 64bit
+
+Feel free to prepare a new slave and ask us to add it to buildbot! The
+only requirement is to be able to build Ganeti with all or most of its
+dependencies (we can make exceptions if needed).
+
+== Buildmaster users ==
+
+The users (which can cancel builds, force builds, etc.) are managed by
+hand (as we shouldn't need any user beside a generic one), in
+`/srv/buildbot/masters/ganeti/htpasswd`. Note that htpasswd (from
+apache2-utils) needs to be run with `-d`, as buildbot 0.8.6p1 doesn't
+yet support md5/sha digests.
+
+== Slave setup ==
+
+While the slaves are setup by slack, not everything was automated.
+
+Initial setup means just apt-get installing slack, and pointing
+`/etc/slack.conf` to localhost (assuming you ssh into the machines
+with an rsync server exported on the correct port):
+
+{{{
+…
+SOURCE=rsync://localhost/slack
+…
+}}}
+
+Then afterwards running slack should be enough.
+
+=== Debian ====
+
+On grnet, the base images come with NetManager and a number of other
+daemons that are useful for desktop use; as the VMs don't have lots of
+memory, I've disabled them and switched back to plain
+`/etc/network/interfaces`.
+
+On wheezy, pyinotify throws epydoc into a fit, so the solution (urgh!)
+is to hand-modify `/usr/share/pyshared/pyinotify.py` and remove the
+`class _PyinotifyLogger(logging.getLoggerClass())` definition (this
+was removed as well in an upstream commit,
+`98c5f41a6e2e90827a63ff1b878596f4080481cc`).
+
+==== Shelltestrunner on squeeze ====
+
+The `shelltestrunner` cabal package is very hard to install on
+squeeze, as it depends (for some purely cosmetical things) on newer
+packages that can be installed on ghc 6.12. So the installation of
+shelltestrunner was done manually:
+
+{{{
+cabal unpack shelltestrunner
+}}}
+
+And apply the following patch:
+
+{{{
+diff -ur old/shelltestrunner-1.3.1/shelltest.hs
new/shelltestrunner-1.3.1/shelltest.hs
+--- xc/shelltestrunner-1.3.1/shelltest.hs 2013-01-28
14:03:38.000000000 +0200
++++ shelltestrunner-1.3.1/shelltest.hs 2013-01-22 18:16:55.000000000 +0200
+@@ -34,7 +34,6 @@
+ import qualified System.FilePath.Find as Find (extension)
+ import Control.Applicative ((<$>))
+ import Data.Algorithm.Diff
+-import Distribution.PackageDescription.TH (packageVariable, package,
pkgVersion)
+
+ import PlatformString (fromPlatformString, toPlatformString)
+
+@@ -43,7 +42,7 @@
+
+ progname, version, progversion :: String
+ progname = "shelltest"
+-version = $(packageVariable (pkgVersion . package))
++version = "1.3.1"
+ progversion = progname ++ " " ++ version
+ proghelpsuffix :: [String]
+ proghelpsuffix = [
+diff -ur old/shelltestrunner-1.3.1/shelltestrunner.cabal
new/shelltestrunner-1.3.1/shelltestrunner.cabal
+--- xc/shelltestrunner-1.3.1/shelltestrunner.cabal 2013-01-28
14:03:38.000000000 +0200
++++ shelltestrunner-1.3.1/shelltestrunner.cabal 2013-01-22
18:06:25.000000000 +0200
+@@ -29,7 +29,6 @@
+ ghc-options: -threaded -W -fwarn-tabs
+ build-depends:
+ base >= 4 && < 5
+- ,cabal-file-th
+ ,filemanip >= 0.3 && < 0.4
+ ,HUnit < 1.3
+ ,cmdargs >= 0.7 && < 0.11
+}}}
+
+After that, running `cabal install --global` as root should do the right
thing.
+
+== Starting/stopping ==
+
+The buildmaster setup is automatically started, as the buildbot is
+installed from Debian packages. Manually starting/stopping/reconfiguring
is possible via:
+
+{{{
+cd /srv/buildbot/masters/ganeti
+buildbot stop|start|checkconfig|reconfig
+tail -f twistd.log
+}}}
+
+The wheezy slave is started/stopped as well (for the same reason,
+automatically from packages), but the squeeze slave is only started at
+boot time from `/etc/rc.local`. All slaves are located under
+`/srv/buildbot/slaves`, so starting/stopping them is a matter of:
+
+{{{
+cd /srv/buildbot/slaves/unittests-wheezy64
+buildslave stop|start
+}}}
+
+== Source code ==
+
+The source code is stored in Git under git.ganeti.org, in the
+[http://git.ganeti.org/buildbot.git/ buildbot repository].
--
---
You received this message because you are subscribed to the Google Groups "ganeti-commits" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.