On 2007-11-26, <elecgabriel(a)robfinefood.be> <elecgabriel(a)robfinefood.be> wrote:
> SPAM
On pourrait mettre cette liste en member-only-can-post?
--
SIGOURE Benoit aka Tsuna (SUSv3 compliant)
_____ "I think Git is definitely in the running
/EPITA\ Promo 2008.CSI/ACU/YAKA to be the dominate version control system."
-- Bob Proulx
URL: https://svn.lrde.epita.fr/svn/lrde-tools/trunk/buildbot
Git branch: master (HEAD: 4ffdab6)
ChangeLog:
2007-11-25 Benoit Sigoure <tsuna(a)lrde.epita.fr>
Add a Maildir parser for the commit hook messages of spot.
* masters/spot_master.cfg (MyMaildirSource): New class.
Use it.
Send build failures to <login>@src.lip6.fr.
---
masters/ChangeLog | 7 ++++
masters/spot_master.cfg | 71 +++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/masters/ChangeLog b/masters/ChangeLog
index a0ce577..6903e26 100644
--- a/masters/ChangeLog
+++ b/masters/ChangeLog
@@ -1,3 +1,10 @@
+2007-11-25 Benoit Sigoure <tsuna(a)lrde.epita.fr>
+
+ Add a Maildir parser for the commit hook messages of spot.
+ * masters/spot_master.cfg (MyMaildirSource): New class.
+ Use it.
+ Send build failures to <login>@src.lip6.fr.
+
2007-11-21 Benoit Sigoure <tsuna(a)lrde.epita.fr>
Add a buildfarm for Spot.
diff --git a/masters/spot_master.cfg b/masters/spot_master.cfg
index 5754f0a..103175a 100644
--- a/masters/spot_master.cfg
+++ b/masters/spot_master.cfg
@@ -32,8 +32,73 @@ c['slavePortnum'] = 9945
# source code changes. Any class which implements IChangeSource can be added
# to this list: there are several in buildbot/changes/*.py to choose from.
-import buildbot.changes.pb
-c['change_source'] = [buildbot.changes.pb.PBChangeSource()]
+from buildbot.changes.mail import MaildirSource
+from buildbot.changes import changes
+from email.Utils import parseaddr
+from email.Iterators import body_line_iterator
+import re
+from time import mktime, strptime
+from twisted.python import log
+# Forked from FCMaildirSource
+class MyMaildirSource(MaildirSource):
+ name = "MyMaildirSource"
+
+ def parse(self, m, prefix=None):
+ """Parse mail sent by spot CVS commit hook"""
+
+ log.msg('MyMaildirSource.parse')
+ files = None
+ comments = None
+ lines = list(body_line_iterator(m))
+ who = None
+ # Who, when
+ while lines:
+ line = lines.pop(0)
+ if line.startswith("Changes by:"):
+ line = line.rstrip("\n")
+ log.msg('Got a commit mail: ' + line)
+ r = re.compile(r'Changes by:\s*([^<]+) <([^>]*)>\s*([\d\s/:]*)')
+ m = r.match(line)
+ name = m.group(1)
+ addr = m.group(2)
+ # Take the login from the email eg: foo(a)bar.com -> foo
+ who = addr[0:addr.find('@')]
+ when = mktime(strptime(m.group(3), "%y/%m/%d %H:%M:%S"))
+ break
+ while lines:
+ line = lines.pop(0)
+ if line == "Modified files:\n":
+ files = []
+ break
+ # What changed
+ while lines:
+ line = lines.pop(0)
+ if line == "\n":
+ break
+ file = line.rstrip("\n")
+ files.append(file)
+ # Why
+ while lines:
+ line = lines.pop(0)
+ if line == "Log message:\n":
+ comments = ""
+ break
+ # message is terminated by "Patches:" or "Index:..." (patch)
+ while lines:
+ line = lines.pop(0)
+ if line.startswith("Patches:") or line.startswith("Index: "):
+ comments = comments.rstrip() + "\n"
+ break
+ comments += line
+ # The mail was just some noise, it doesn't come from the
+ # commit hook or is malformated.
+ if who is None or files is None or comments is None:
+ log.msg("mail seems incomplete")
+ return None
+ return changes.Change(who, files, comments, when=when)
+
+import os
+c['change_source'] = MyMaildirSource(os.path.expanduser("~/Maildir"))
####### SCHEDULERS
# http://buildbot.sourceforge.net/manual-0.7.4.html#Listing-Change-Sources-an…
@@ -173,7 +238,7 @@ c['status'].append(html.WebStatus(http_port="tcp:8045:interface=127.0.0.1",
from buildbot.status import mail
c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)lrde.epita.fr",
- lookup="lrde.epita.fr",
+ lookup="src.lip6.fr",
mode="problem",
sendToInterestedUsers=True))
#
URL: https://svn.lrde.epita.fr/svn/lrde-tools/trunk/buildbot/masters
ChangeLog:
2007-11-21 Benoit Sigoure <tsuna(a)lrde.epita.fr>
Add a buildfarm for Spot.
* www/index.php: Link to the new WebStatus.
* spot_master.cfg: New.
* create_buildmaster.sh: Adjust an echo message.
* apache_bf.conf: Add a reverse proxy for the new WebStatus.
* buildfactory.py: Make the `SCM checkout' step overridable (oh boy,
Spot is still on CVS).
---
diffstat not available
Index: trunk/buildbot/masters/www/index.php
===================================================================
--- trunk/buildbot/masters/www/index.php (revision 471)
+++ trunk/buildbot/masters/www/index.php (revision 472)
@@ -12,6 +12,7 @@
<li><a href="buildfarm/oln/">Olena (trunk)</a></li>
<li><a href="buildfarm/vaucanson/">Vaucanson (trunk)</a></li>
<li><a href="buildfarm/vaucanson-bmi/">Vaucanson (bmi)</a></li>
+ <li><a href="buildfarm/spot/">Spot</a></li>
</ul>
<h2>Latest builds</h2>
<a href="/releases/"><strong>All releases</strong></a>
Index: trunk/buildbot/masters/create_buildmaster.sh
===================================================================
--- trunk/buildbot/masters/create_buildmaster.sh (revision 471)
+++ trunk/buildbot/masters/create_buildmaster.sh (revision 472)
@@ -290,6 +290,6 @@
svn diff $BUILDFARM_WC
And once it's fine for you:
svn commit $BUILDFARM_WC --username <your_username>
- buildbot start `pwd`/$bb_dir_name
+ buildbot start $BUILDBOT_ROOT/$bb_dir_name
Make sure you patched Apache's configuration and restared it.
Note: You still have to create build slaves on the builders!"
Index: trunk/buildbot/masters/apache_bf.conf
===================================================================
--- trunk/buildbot/masters/apache_bf.conf (revision 471)
+++ trunk/buildbot/masters/apache_bf.conf (revision 472)
@@ -33,4 +33,7 @@
ProxyPass /buildfarm/vaucanson-bmi/ http://127.0.0.1:8044/
ProxyPassReverse /buildfarm/vaucanson-bmi/ http://127.0.0.1:8044/
+
+ ProxyPass /buildfarm/spot/ http://127.0.0.1:8045/
+ ProxyPassReverse /buildfarm/spot/ http://127.0.0.1:8045/
</IfModule>
Index: trunk/buildbot/masters/buildfactory.py
===================================================================
--- trunk/buildbot/masters/buildfactory.py (revision 471)
+++ trunk/buildbot/masters/buildfactory.py (revision 472)
@@ -49,7 +49,7 @@
def __init__ (self, project_repos,
project_name="", kernel_path=None, extra_configure_args="",
- bootstrap_cmd="", configure_cmd="",
+ scm_step="", bootstrap_cmd="", configure_cmd="",
compile_cmd="", check_cmd="", install_cmd="",
install_dir=None, upload_cmd="", distcheck_cmd="",
distcheck_configure_args="", dist_cmd="", extra_path=None, branch="",
@@ -100,9 +100,12 @@
description='fixing perms',
descriptionDone='fix perms', name='perms')
+ if scm_step == "":
self.addStep(scm.SVN,
baseURL=base_svn_url + project_repos + '/',
defaultBranch=self.branch, mode='copy')
+ elif scm_step is not None:
+ self.addStep(scm_step)
if install_dir is None or install_dir == "":
self.install_dir = self.project_name
@@ -287,7 +290,7 @@
"""
def __init__ (self, project_repos,
- project_name="", extra_qmake_args="",
+ project_name="", extra_qmake_args="", scm_step="",
bootstrap_cmd=None, configure_cmd="", compile_cmd="",
check_cmd=None, install_cmd=None, install_dir=None,
upload_cmd=None, extra_path=None, branch=""):
@@ -320,9 +323,12 @@
if self.branch == "":
self.branch = 'trunk';
+ if scm_step == "":
self.addStep(scm.SVN,
baseURL=base_svn_url + project_repos + '/',
defaultBranch=self.branch, mode='copy')
+ elif scm_step is not None:
+ self.addStep(scm_step)
if bootstrap_cmd == "":
self.bootstrap_cmd = './bootstrap'
@@ -394,7 +400,7 @@
def __init__ (self, project_repos,
project_name="", extra_scons_args="",
- compile_cmd="",
+ scm_step="", compile_cmd="",
check_cmd=None, install_cmd="", install_dir=None,
upload_cmd=None, extra_path=None, branch=""):
"""
@@ -426,9 +432,12 @@
if self.branch == "":
self.branch = 'trunk';
+ if scm_step == "":
self.addStep(scm.SVN,
baseURL=base_svn_url + project_repos + '/',
defaultBranch=self.branch, mode='copy')
+ elif scm_step is not None:
+ self.addStep(scm_step)
if compile_cmd == "":
self.compile_cmd = 'scons ' + self.extra_scons_args
Index: trunk/buildbot/masters/spot_master.cfg
===================================================================
--- trunk/buildbot/masters/spot_master.cfg (revision 0)
+++ trunk/buildbot/masters/spot_master.cfg (revision 472)
@@ -0,0 +1,205 @@
+# -*- python -*-
+# ex: set syntax=python:
+# vi: set ft=python:
+# Doc @ http://buildbot.sourceforge.net/manual-0.7.4.html#Config-File-Format
+
+c = BuildmasterConfig = {}
+
+####### PROJECT IDENTITY
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Defining-the-Project
+
+c['projectName'] = 'Spot'
+c['projectURL'] = 'https://spot.lrde.org/'
+
+# the 'buildbotURL' string should point to the location where the buildbot's
+# internal web server (usually the html.Waterfall page) is visible. This
+# typically uses the port number set in the Waterfall 'status' entry, but
+# with an externally-visible host name which the buildbot cannot figure out
+# without some help.
+
+c['buildbotURL'] = 'https://build.lrde.org/buildfarm/spot/'
+
+# 'slavePortnum' defines the TCP port to listen on. This must match the value
+# configured into the buildslaves (with their --master option)
+
+c['slavePortnum'] = 9945
+
+####### CHANGESOURCES
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Listing-Change-Sources-an…
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Getting-Source-Code-Chang…
+
+# the 'change_source' list tells the buildmaster how it should find out about
+# source code changes. Any class which implements IChangeSource can be added
+# to this list: there are several in buildbot/changes/*.py to choose from.
+
+import buildbot.changes.pb
+c['change_source'] = [buildbot.changes.pb.PBChangeSource()]
+
+####### SCHEDULERS
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Listing-Change-Sources-an…
+
+## configure the Schedulers
+
+from buildbot.scheduler import AnyBranchScheduler
+c['schedulers'] = []
+c['schedulers'].append(AnyBranchScheduler(name='all', branches=None,
+ treeStableTimer=10*60,
+ # When a change occurs, wait 10 minutes before
+ # lunching the build.
+ builderNames=['mingw32-gcc-3.4.5',
+ 'winxp-vcxx8',
+ 'powerpc-apple-darwin8-gcc-4.0.1',
+ 'i686-apple-darwin8-gcc-4.0.1',
+ 'i486-linux-gnu-gcc-4.1',
+ 'i486-linux-gnu-gcc-3.3']))
+
+
+####### BUILDSLAVES
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Buildslave-Specifiers
+
+# the 'slaves' list defines the set of allowable buildslaves. Each element is a
+# tuple of bot-name and bot-password. These correspond to values given to the
+# buildslave's mktap invocation.
+from buildbot.buildslave import BuildSlave
+c['slaves'] = [BuildSlave('bot-winxp-mingw', 'RG,[{^a+]}aP,]'),
+ BuildSlave('bot-winxp-vcxx', 'I|(_b;)p*mZa0,'),
+ BuildSlave('bot-macppc', '!j<L%Q2@xb|zha'),
+ BuildSlave('bot-macx86', '.+rp+-D|(L#r-x'),
+ BuildSlave('bot-linux-gcc3', 'Y#j:6:3"Ep1_vV'),
+ BuildSlave('bot-linux-gcc4', ':.(cW/W!sh5#X]'),
+ ]
+
+####### BUILDERS
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Defining-Builders
+
+# the 'builders' list defines the Builders. Each one is configured with a
+# dictionary, using the following keys:
+# name (required): the name used to describe this bilder
+# slavename (required): which slave to use, must appear in c['slaves']
+# builddir (required): which subdirectory to run the builder in
+# factory (required): a BuildFactory to define how the build is run
+
+# buildbot/process/factory.py provides several BuildFactory classes you can
+# start with, which implement build processes for common targets (GNU
+# autoconf projects, CPAN perl modules, etc). The factory.BuildFactory is the
+# base class, and is configured with a series of BuildSteps. When the build
+# is run, the appropriate buildslave is told to execute each Step in turn.
+
+# the first BuildStep is typically responsible for obtaining a copy of the
+# sources. There are source-obtaining Steps in buildbot/process/step.py for
+# CVS, SVN, and others.
+
+builders = []
+from buildfactory import GNUBuildSystem
+from buildbot.steps.source import CVS
+checkout = CVS(cvsroot='anonymous@minium.lip6.fr:/Volumes/CVS/repository/spot',
+ cvsmodule='spot')
+
+f_spot_unix = GNUBuildSystem(project_repos='spot',
+ scm_step=checkout,
+ bootstrap_cmd='autoreconf -fvi')
+
+f_spot_unix_gcc3 = GNUBuildSystem(project_repos='spot',
+ scm_step=checkout,
+ bootstrap_cmd='autoreconf -fvi',
+ extra_configure_args='CC=gcc-3.3 CXX=g++-3.3',
+ install_dir='spot_gcc3')
+
+f_spot_mingw = GNUBuildSystem(project_repos='spot',
+ scm_step=checkout,
+ bootstrap_cmd='autoreconf -fvi',
+ extra_configure_args='--host=mingw32 --build=i686-pc-cygwin')
+
+f_spot_vcxx = GNUBuildSystem(project_repos='spot',
+ scm_step=checkout,
+ bootstrap_cmd='autoreconf -fvi',
+ extra_configure_args='''CC=cccl CXX=cccl LD=cccl \\
+ && sed "s/^host=.*/host=\'i686-pc-msvc++8\'/" -i config.log''')
+
+builder_spot_winxp_mingw = {'name': 'mingw32-gcc-3.4.5',
+ 'slavename': 'bot-winxp-mingw',
+ 'builddir': 'spot_winxp_mingw',
+ 'factory': f_spot_mingw
+ }
+builder_spot_winxp_vcxx = {'name': 'winxp-vcxx8',
+ 'slavename': 'bot-winxp-vcxx',
+ 'builddir': 'spot_winxp_vcxx',
+ 'factory': f_spot_vcxx
+ }
+builder_spot_macppc = {'name': 'powerpc-apple-darwin8-gcc-4.0.1',
+ 'slavename': 'bot-macppc',
+ 'builddir': 'spot_macppc',
+ 'factory': f_spot_unix
+ }
+builder_spot_macx86 = {'name': 'i686-apple-darwin8-gcc-4.0.1',
+ 'slavename': 'bot-macx86',
+ 'builddir': 'spot_macx86',
+ 'factory': f_spot_unix
+ }
+builder_spot_linux_gcc4 = {'name': 'i486-linux-gnu-gcc-4.1',
+ 'slavename': 'bot-linux-gcc4',
+ 'builddir': 'spot_linux_gcc4',
+ 'factory': f_spot_unix
+ }
+builder_spot_linux_gcc3 = {'name': 'i486-linux-gnu-gcc-3.3',
+ 'slavename': 'bot-linux-gcc3',
+ 'builddir': 'spot_linux_gcc3',
+ 'factory': f_spot_unix_gcc3
+ }
+
+c['builders'] = [builder_spot_winxp_mingw,
+ builder_spot_winxp_vcxx,
+ builder_spot_macppc,
+ builder_spot_macx86,
+ builder_spot_linux_gcc3,
+ builder_spot_linux_gcc4,
+ ]
+
+####### STATUS TARGETS
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Status-Delivery
+
+# 'status' is a list of Status Targets. The results of each build will be
+# pushed to these targets. buildbot/status/*.py has a variety to choose from,
+# including web pages, email senders, and IRC bots.
+
+c['status'] = []
+
+from buildbot.status import html
+from buildbot.status.web.authentication import LDAPAuth
+c['status'].append(html.WebStatus(http_port="tcp:8045:interface=127.0.0.1",
+ allowForce=True,
+ auth=LDAPAuth('beyrouth.lrde.epita.fr',
+ 'ou=people,dc=lrde,dc=epita,dc=fr')))
+
+from buildbot.status import mail
+c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)lrde.epita.fr",
+ lookup="lrde.epita.fr",
+ mode="problem",
+ sendToInterestedUsers=True))
+#
+# from buildbot.status import words
+# c['status'].append(words.IRC(host="irc.example.com", nick="bb",
+# channels=["#example"]))
+#
+# from buildbot.status import client
+# c['status'].append(client.PBListener(9988))
+
+
+####### DEBUGGING OPTIONS
+
+# if you set 'debugPassword', then you can connect to the buildmaster with
+# the diagnostic tool in contrib/debugclient.py . From this tool, you can
+# manually force builds and inject changes, which may be useful for testing
+# your buildmaster without actually commiting changes to your repository (or
+# before you have a functioning 'change_source' set up). The debug tool uses the
+# same port number as the slaves do: 'slavePortnum'.
+
+#c['debugPassword'] = "debugpassword"
+
+# if you set 'manhole', you can ssh into the buildmaster and get an
+# interactive python shell, which may be useful for debugging buildbot
+# internals. It is probably only useful for buildbot developers. You can also
+# use an authorized_keys file, or plain telnet.
+#from buildbot import manhole
+#c['manhole'] = manhole.PasswordManhole("tcp:9999:interface=127.0.0.1",
+# "admin", "password")
Heavy trading Draws More Investors!
EnerBrite Technologies Group, Inc. (etG u) $0.01
Since Monday EnerBrite has been the focus of heavy trading as investors
scrambled to grab shares. Today's news released will only add more fuel
to the fire as this continues its steady climb. Don't let the holiday
pass without first moving on e TGU.
URL: https://svn.lrde.epita.fr/svn/lrde-tools/trunk/buildbot/masters
ChangeLog:
2007-11-20 Benoit Sigoure <tsuna(a)lrde.epita.fr>
Add a buildfarm for VCSN BMI and update configuration.
Move the web interfaces under /buildfarm.
* oln_master.cfg,
* vaucanson_master.cfg: Update the buildbotURL, remove useless import.
* www/index.php: Adjust links.
* create_buildmaster.sh: Remove robots.txt and adust the links.
* template_gnu_master.cfg,
* template_qt_master.cfg: Catch up with the current settings.
* vaucanson-bmi_master.cfg: New.
* apache_bf.conf: Enfore HTTPS, add rewrite rules for backward
compatibility with existing URLs. Adjust all the reverse proxies.
---
diffstat not available
Index: trunk/buildbot/masters/oln_master.cfg
===================================================================
--- trunk/buildbot/masters/oln_master.cfg (revision 469)
+++ trunk/buildbot/masters/oln_master.cfg (revision 470)
@@ -17,7 +17,7 @@
# with an externally-visible host name which the buildbot cannot figure out
# without some help.
-c['buildbotURL'] = 'https://olena.lrde.org'
+c['buildbotURL'] = 'https://build.lrde.org/buildfarm/oln/'
# 'slavePortnum' defines the TCP port to listen on. This must match the value
# configured into the buildslaves (with their --master option)
@@ -149,7 +149,6 @@
c['status'] = []
-import os
from buildbot.status import html
from buildbot.status.web.authentication import LDAPAuth
c['status'].append(html.WebStatus(http_port="tcp:8042:interface=127.0.0.1",
Index: trunk/buildbot/masters/www/index.php
===================================================================
--- trunk/buildbot/masters/www/index.php (revision 469)
+++ trunk/buildbot/masters/www/index.php (revision 470)
@@ -9,8 +9,9 @@
<body>
<h2>BuildFarms</h2>
<ul>
- <li><a href="oln/">Olena (trunk)</a></li>
- <li><a href="vaucanson/">Vaucanson (trunk)</a></li>
+ <li><a href="buildfarm/oln/">Olena (trunk)</a></li>
+ <li><a href="buildfarm/vaucanson/">Vaucanson (trunk)</a></li>
+ <li><a href="buildfarm/vaucanson-bmi/">Vaucanson (bmi)</a></li>
</ul>
<h2>Latest builds</h2>
<a href="/releases/"><strong>All releases</strong></a>
Index: trunk/buildbot/masters/vaucanson_master.cfg
===================================================================
--- trunk/buildbot/masters/vaucanson_master.cfg (revision 469)
+++ trunk/buildbot/masters/vaucanson_master.cfg (revision 470)
@@ -17,7 +17,7 @@
# with an externally-visible host name which the buildbot cannot figure out
# without some help.
-c['buildbotURL'] = 'https://vaucanson.lrde.org/'
+c['buildbotURL'] = 'https://build.lrde.org/buildfarm/vaucanson/'
# 'slavePortnum' defines the TCP port to listen on. This must match the value
# configured into the buildslaves (with their --master option)
@@ -149,7 +149,6 @@
c['status'] = []
-import os
from buildbot.status import html
from buildbot.status.web.authentication import LDAPAuth
c['status'].append(html.WebStatus(http_port="tcp:8043:interface=127.0.0.1",
Index: trunk/buildbot/masters/create_buildmaster.sh
===================================================================
--- trunk/buildbot/masters/create_buildmaster.sh (revision 469)
+++ trunk/buildbot/masters/create_buildmaster.sh (revision 470)
@@ -233,6 +233,7 @@
done
echo 'creating title.js'
echo "document.title = '$project_name ' + document.title;" >title.js
+ rm -f robots.txt
fi
run cd "$here"
@@ -260,7 +261,7 @@
# Add a link on the main page of the BF
grep "$bb_dir_name" $BUILDFARM_WC/masters/www/index.php >/dev/null || {
sed >/tmp/tmp$$.html "/<\\/ul>/i\\
- <li><a href=\"$bb_dir_name/\">$project_name ($branch_name)</a></li>" \
+ <li><a href=\"buildfarm/$bb_dir_name/\">$project_name ($branch_name)</a></li>" \
$BUILDFARM_WC/masters/www/index.php || exit 1
mv -f /tmp/tmp$$.html $BUILDFARM_WC/masters/www/index.php || exit 1
chmod a+r $BUILDFARM_WC/masters/www/index.php
Index: trunk/buildbot/masters/template_qt_master.cfg
===================================================================
--- trunk/buildbot/masters/template_qt_master.cfg (revision 469)
+++ trunk/buildbot/masters/template_qt_master.cfg (revision 470)
@@ -129,14 +129,16 @@
c['status'] = []
-import os
from buildbot.status import html
+from buildbot.status.web.authentication import LDAPAuth
c['status'].append(html.WebStatus(http_port="tcp:<WATERFALL_PORT_NUM>:interface=127.0.0.1",
- allowForce=True))
+ allowForce=True,
+ auth=LDAPAuth('beyrouth.lrde.epita.fr',
+ 'ou=people,dc=lrde,dc=epita,dc=fr')))
from buildbot.status import mail
-c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)gostai.com",
- lookup="gostai.com",
+c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)lrde.epita.fr",
+ lookup="lrde.epita.fr",
mode="problem",
sendToInterestedUsers=True))
#
Index: trunk/buildbot/masters/vaucanson-bmi_master.cfg
===================================================================
--- trunk/buildbot/masters/vaucanson-bmi_master.cfg (revision 0)
+++ trunk/buildbot/masters/vaucanson-bmi_master.cfg (revision 470)
@@ -0,0 +1,204 @@
+# -*- python -*-
+# ex: set syntax=python:
+# vi: set ft=python:
+# Doc @ http://buildbot.sourceforge.net/manual-0.7.4.html#Config-File-Format
+
+c = BuildmasterConfig = {}
+
+####### PROJECT IDENTITY
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Defining-the-Project
+
+c['projectName'] = 'Vaucanson'
+c['projectURL'] = 'https://vaucanson.lrde.org/'
+
+# the 'buildbotURL' string should point to the location where the buildbot's
+# internal web server (usually the html.Waterfall page) is visible. This
+# typically uses the port number set in the Waterfall 'status' entry, but
+# with an externally-visible host name which the buildbot cannot figure out
+# without some help.
+
+c['buildbotURL'] = 'https://build.lrde.org/buildfarm/vaucanson-bmi/'
+
+# 'slavePortnum' defines the TCP port to listen on. This must match the value
+# configured into the buildslaves (with their --master option)
+
+c['slavePortnum'] = 9944
+
+####### CHANGESOURCES
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Listing-Change-Sources-an…
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Getting-Source-Code-Chang…
+
+# the 'change_source' list tells the buildmaster how it should find out about
+# source code changes. Any class which implements IChangeSource can be added
+# to this list: there are several in buildbot/changes/*.py to choose from.
+
+import buildbot.changes.pb
+c['change_source'] = [buildbot.changes.pb.PBChangeSource()]
+
+####### SCHEDULERS
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Listing-Change-Sources-an…
+
+## configure the Schedulers
+
+from buildbot.scheduler import AnyBranchScheduler
+c['schedulers'] = []
+c['schedulers'].append(AnyBranchScheduler(name='all', branches=None,
+ treeStableTimer=10*60,
+ # When a change occurs, wait 10 minutes before
+ # lunching the build.
+ builderNames=['mingw32-gcc-3.4.5',
+ 'winxp-vcxx8',
+ 'powerpc-apple-darwin8-gcc-4.0.1',
+ 'i686-apple-darwin8-gcc-4.0.1',
+ 'i486-linux-gnu-gcc-4.1',
+ 'i486-linux-gnu-gcc-3.3']))
+
+
+####### BUILDSLAVES
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Buildslave-Specifiers
+
+# the 'slaves' list defines the set of allowable buildslaves. Each element is a
+# tuple of bot-name and bot-password. These correspond to values given to the
+# buildslave's mktap invocation.
+from buildbot.buildslave import BuildSlave
+c['slaves'] = [BuildSlave('bot-winxp-mingw', 'vWcOqp?Ij]1U!I'),
+ BuildSlave('bot-winxp-vcxx', '0QqZ9?6NqD-4*t'),
+ BuildSlave('bot-macppc', 'z>kh-"!d2rh++7'),
+ BuildSlave('bot-macx86', '53?{KO$%t-+3WU'),
+ BuildSlave('bot-linux-gcc3', ')$#+/<${>hm*k<'),
+ BuildSlave('bot-linux-gcc4', '8YqLZ4U"Biy.w!'),
+ ]
+
+####### BUILDERS
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Defining-Builders
+
+# the 'builders' list defines the Builders. Each one is configured with a
+# dictionary, using the following keys:
+# name (required): the name used to describe this bilder
+# slavename (required): which slave to use, must appear in c['slaves']
+# builddir (required): which subdirectory to run the builder in
+# factory (required): a BuildFactory to define how the build is run
+
+# buildbot/process/factory.py provides several BuildFactory classes you can
+# start with, which implement build processes for common targets (GNU
+# autoconf projects, CPAN perl modules, etc). The factory.BuildFactory is the
+# base class, and is configured with a series of BuildSteps. When the build
+# is run, the appropriate buildslave is told to execute each Step in turn.
+
+# the first BuildStep is typically responsible for obtaining a copy of the
+# sources. There are source-obtaining Steps in buildbot/process/step.py for
+# CVS, SVN, and others.
+
+builders = []
+from buildfactory import GNUBuildSystem
+
+mybranch='branches/bmi'
+
+f_vaucanson_unix = GNUBuildSystem(project_repos='vaucanson',
+ project_name='vaucanson-bmi',
+ branch=mybranch)
+
+f_vaucanson_unix_gcc3 = GNUBuildSystem(project_repos='vaucanson',
+ project_name='vaucanson-bmi',
+ branch=mybranch,
+ extra_configure_args='CC=gcc-3.3 CXX=g++-3.3',
+ install_dir='vaucanson-bmi_gcc3')
+
+f_vaucanson_mingw = GNUBuildSystem(project_repos='vaucanson',
+ project_name='vaucanson-bmi',
+ branch=mybranch,
+ extra_configure_args='--host=mingw32 --build=i686-pc-cygwin')
+
+f_vaucanson_vcxx = GNUBuildSystem(project_repos='vaucanson',
+ project_name='vaucanson-bmi',
+ branch=mybranch,
+ extra_configure_args='''CC=cccl CXX=cccl LD=cccl \\
+ && sed "s/^host=.*/host=\'i686-pc-msvc++8\'/" -i config.log''')
+
+builder_vaucanson_winxp_mingw = {'name': 'mingw32-gcc-3.4.5',
+ 'slavename': 'bot-winxp-mingw',
+ 'builddir': 'vaucanson_winxp_mingw',
+ 'factory': f_vaucanson_mingw
+ }
+builder_vaucanson_winxp_vcxx = {'name': 'winxp-vcxx8',
+ 'slavename': 'bot-winxp-vcxx',
+ 'builddir': 'vaucanson_winxp_vcxx',
+ 'factory': f_vaucanson_vcxx
+ }
+builder_vaucanson_macppc = {'name': 'powerpc-apple-darwin8-gcc-4.0.1',
+ 'slavename': 'bot-macppc',
+ 'builddir': 'vaucanson_macppc',
+ 'factory': f_vaucanson_unix
+ }
+builder_vaucanson_macx86 = {'name': 'i686-apple-darwin8-gcc-4.0.1',
+ 'slavename': 'bot-macx86',
+ 'builddir': 'vaucanson_macx86',
+ 'factory': f_vaucanson_unix
+ }
+builder_vaucanson_linux_gcc4 = {'name': 'i486-linux-gnu-gcc-4.1',
+ 'slavename': 'bot-linux-gcc4',
+ 'builddir': 'vaucanson_linux_gcc4',
+ 'factory': f_vaucanson_unix
+ }
+builder_vaucanson_linux_gcc3 = {'name': 'i486-linux-gnu-gcc-3.3',
+ 'slavename': 'bot-linux-gcc3',
+ 'builddir': 'vaucanson_linux_gcc3',
+ 'factory': f_vaucanson_unix_gcc3
+ }
+
+c['builders'] = [builder_vaucanson_winxp_mingw,
+ builder_vaucanson_winxp_vcxx,
+ builder_vaucanson_macppc,
+ builder_vaucanson_macx86,
+ builder_vaucanson_linux_gcc3,
+ builder_vaucanson_linux_gcc4,
+ ]
+
+####### STATUS TARGETS
+# http://buildbot.sourceforge.net/manual-0.7.4.html#Status-Delivery
+
+# 'status' is a list of Status Targets. The results of each build will be
+# pushed to these targets. buildbot/status/*.py has a variety to choose from,
+# including web pages, email senders, and IRC bots.
+
+c['status'] = []
+
+from buildbot.status import html
+from buildbot.status.web.authentication import LDAPAuth
+c['status'].append(html.WebStatus(http_port="tcp:8044:interface=127.0.0.1",
+ allowForce=True,
+ auth=LDAPAuth('beyrouth.lrde.epita.fr',
+ 'ou=people,dc=lrde,dc=epita,dc=fr')))
+
+from buildbot.status import mail
+c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)lrde.epita.fr",
+ lookup="lrde.epita.fr",
+ mode="problem",
+ sendToInterestedUsers=True))
+#
+# from buildbot.status import words
+# c['status'].append(words.IRC(host="irc.example.com", nick="bb",
+# channels=["#example"]))
+#
+# from buildbot.status import client
+# c['status'].append(client.PBListener(9988))
+
+
+####### DEBUGGING OPTIONS
+
+# if you set 'debugPassword', then you can connect to the buildmaster with
+# the diagnostic tool in contrib/debugclient.py . From this tool, you can
+# manually force builds and inject changes, which may be useful for testing
+# your buildmaster without actually commiting changes to your repository (or
+# before you have a functioning 'change_source' set up). The debug tool uses the
+# same port number as the slaves do: 'slavePortnum'.
+
+#c['debugPassword'] = "debugpassword"
+
+# if you set 'manhole', you can ssh into the buildmaster and get an
+# interactive python shell, which may be useful for debugging buildbot
+# internals. It is probably only useful for buildbot developers. You can also
+# use an authorized_keys file, or plain telnet.
+#from buildbot import manhole
+#c['manhole'] = manhole.PasswordManhole("tcp:9999:interface=127.0.0.1",
+# "admin", "password")
Index: trunk/buildbot/masters/apache_bf.conf
===================================================================
--- trunk/buildbot/masters/apache_bf.conf (revision 469)
+++ trunk/buildbot/masters/apache_bf.conf (revision 470)
@@ -1,8 +1,19 @@
# vim:ft=apache
Alias /releases /work/build/releases
# Handle typos.
-#XXX Redirect permanent /release https://buildfarm.lrde.org/releases
-Redirect permanent /release http://buildfarm.lrde.org/releases
+Redirect permanent /release https://buildfarm.lrde.org/releases
+
+# Enforce HTTPS
+RewriteEngine on
+RewriteCond %{SERVER_PORT} ^80$
+RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
+
+# Backward compat
+RewriteRule ^(/oln/.*)$ /buildfarm$1 [L,R]
+RewriteRule ^(/vaucanson/.*)$ /buildfarm$1 [L,R]
+
+#RewriteLog "/var/log/apache2/rewrite.log"
+#RewriteLogLevel 2
# Do not put anything after this line
<IfModule mod_proxy.c>
@@ -14,9 +25,12 @@
Allow from all
</Proxy>
- ProxyPass /oln/ http://127.0.0.1:8042/
- ProxyPassReverse /oln/ http://127.0.0.1:8042/
+ ProxyPass /buildfarm/oln/ http://127.0.0.1:8042/
+ ProxyPassReverse /buildfarm/oln/ http://127.0.0.1:8042/
+
+ ProxyPass /buildfarm/vaucanson/ http://127.0.0.1:8043/
+ ProxyPassReverse /buildfarm/vaucanson/ http://127.0.0.1:8043/
- ProxyPass /vaucanson/ http://127.0.0.1:8043/
- ProxyPassReverse /vaucanson/ http://127.0.0.1:8043/
+ ProxyPass /buildfarm/vaucanson-bmi/ http://127.0.0.1:8044/
+ ProxyPassReverse /buildfarm/vaucanson-bmi/ http://127.0.0.1:8044/
</IfModule>
Index: trunk/buildbot/masters/template_gnu_master.cfg
===================================================================
--- trunk/buildbot/masters/template_gnu_master.cfg (revision 469)
+++ trunk/buildbot/masters/template_gnu_master.cfg (revision 470)
@@ -163,14 +163,16 @@
c['status'] = []
-import os
from buildbot.status import html
+from buildbot.status.web.authentication import LDAPAuth
c['status'].append(html.WebStatus(http_port="tcp:<WATERFALL_PORT_NUM>:interface=127.0.0.1",
- allowForce=True))
+ allowForce=True,
+ auth=LDAPAuth('beyrouth.lrde.epita.fr',
+ 'ou=people,dc=lrde,dc=epita,dc=fr')))
from buildbot.status import mail
-c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)gostai.com",
- lookup="gostai.com",
+c['status'].append(mail.MailNotifier(fromaddr="buildbot(a)lrde.epita.fr",
+ lookup="lrde.epita.fr",
mode="problem",
sendToInterestedUsers=True))
#
Plop,
la nouvelle BF prends vie doucement sur http://buildfarm.lrde.org/
Comme vous pourrez le constater, c'est pas encore tout au point, mais
les 1ère builds tournent. Il manque l'accès HTTPS (soon), pour
l'instant y'a que des builders pour GCC4 et GCC3. Bientôt djo mettra
en place des hooks dans les SVN pour déclencher des builds à chaque
commit. Ceux qui font que ça marche plus recevront un mail leur
signalant le problème.
Si vous avez des remarques, des commentaires, des suggestions, des
feature requests ou des bugs, merci de me les signaler.
Merci à djo pour sa réactivité, comme d'hab ;o
--
SIGOURE Benoit aka Tsuna (SUSv3 compliant)
_____ "I think Git is definitely in the running
/EPITA\ Promo 2008.CSI/ACU/YAKA to be the dominate version control system."
-- Bob Proulx