The i3 buildbot setup
=====================
Michael Stapelberg <michael@i3wm.org>
-August 2012
+September 2012
This document explains the http://www.buildbot.net/[buildbot] setup we use to
provide up-to-date documentation and debian packages at http://build.i3wm.org/.
+dpkg-buildpackage+ and +reprepro+ to generate a Debian repository with a
cleanly compiled package for amd64 and i386. In order for it to work, you need
to install the following packages: +apt-get install devscripts dpkg-dev
-reprepro ubuntu-dev-tools+. Afterwards, you need to allow the user as which the
-buildslave runs to execute pbuilder via sudo without needing a password, so run
-+visudo+ and add a line like this one:
+reprepro ubuntu-dev-tools pbuilder+. Afterwards, you need to allow the user as
+which the buildslave runs to execute pbuilder via sudo without needing a
+password, so add a config file like this one:
-*sudoers line*:
+*sudoers.d*:
---------------------------------------------
-build ALL= NOPASSWD: SETENV: /usr/sbin/pbuilder
+echo 'build ALL= NOPASSWD: SETENV: /usr/sbin/pbuilder' > /etc/sudoers.d/build
---------------------------------------------
Then, as the user as which your buildslave runs, setup the pbuilder
http://code.stapelberg.de/git/go-buildbot-announce/tree/src/i3build.go?id=eeebf1a546454c8a0d82ca623886bb835cd32ba0
+=== Creating the buildslave
+
+One more thing to note is that when creating the buildslave, you should use the
++--umask+ argument to configure the umask for all generated files:
+
+*Creating the buildslave*:
+--------------------------------------------------------------------------------------
+buildslave create-slave --umask=022 i3-buildslave buildbot.i3wm.org build-1 <password>
+--------------------------------------------------------------------------------------
+
== Full configuration file
This is the full configuration file, as tested and currently in use (except for
<h1>The i3 buildbot setup</h1>\r
<span id="author">Michael Stapelberg</span><br />\r
<span id="email"><tt><<a href="mailto:michael@i3wm.org">michael@i3wm.org</a>></tt></span><br />\r
-<span id="revdate">August 2012</span>\r
+<span id="revdate">September 2012</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<tt>dpkg-buildpackage</tt> and <tt>reprepro</tt> to generate a Debian repository with a\r
cleanly compiled package for amd64 and i386. In order for it to work, you need\r
to install the following packages: <tt>apt-get install devscripts dpkg-dev\r
-reprepro ubuntu-dev-tools</tt>. Afterwards, you need to allow the user as which the\r
-buildslave runs to execute pbuilder via sudo without needing a password, so run\r
-<tt>visudo</tt> and add a line like this one:</p></div>\r
-<div class="paragraph"><p><strong>sudoers line</strong>:</p></div>\r
+reprepro ubuntu-dev-tools pbuilder</tt>. Afterwards, you need to allow the user as\r
+which the buildslave runs to execute pbuilder via sudo without needing a\r
+password, so add a config file like this one:</p></div>\r
+<div class="paragraph"><p><strong>sudoers.d</strong>:</p></div>\r
<div class="listingblock">\r
<div class="content">\r
-<pre><tt>build ALL= NOPASSWD: SETENV: /usr/sbin/pbuilder</tt></pre>\r
+<pre><tt>echo 'build ALL= NOPASSWD: SETENV: /usr/sbin/pbuilder' > /etc/sudoers.d/build</tt></pre>\r
</div></div>\r
<div class="paragraph"><p>Then, as the user as which your buildslave runs, setup the pbuilder\r
environments (you only need to do this once):</p></div>\r
status:</p></div>\r
<div class="paragraph"><p><a href="http://code.stapelberg.de/git/go-buildbot-announce/tree/src/i3build.go?id=eeebf1a546454c8a0d82ca623886bb835cd32ba0">http://code.stapelberg.de/git/go-buildbot-announce/tree/src/i3build.go?id=eeebf1a546454c8a0d82ca623886bb835cd32ba0</a></p></div>\r
</div>\r
+<div class="sect2">\r
+<h3 id="_creating_the_buildslave">3.9. Creating the buildslave</h3>\r
+<div class="paragraph"><p>One more thing to note is that when creating the buildslave, you should use the\r
+<tt>--umask</tt> argument to configure the umask for all generated files:</p></div>\r
+<div class="paragraph"><p><strong>Creating the buildslave</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>buildslave create-slave --umask=022 i3-buildslave buildbot.i3wm.org build-1 <password></tt></pre>\r
+</div></div>\r
+</div>\r
</div>\r
</div>\r
<div class="sect1">\r