summaryrefslogtreecommitdiff
path: root/tools/buildbot/master/master.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'tools/buildbot/master/master.cfg')
-rw-r--r--tools/buildbot/master/master.cfg258
1 files changed, 258 insertions, 0 deletions
diff --git a/tools/buildbot/master/master.cfg b/tools/buildbot/master/master.cfg
new file mode 100644
index 0000000..96b0037
--- /dev/null
+++ b/tools/buildbot/master/master.cfg
@@ -0,0 +1,258 @@
+# -*- python -*-
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#
+
+import os, os.path, re
+
+from buildbot.scheduler import Scheduler
+from buildbot.process import factory
+from buildbot.steps import source, shell
+from buildbot.status.html import WebStatus
+from buildbot.scheduler import AnyBranchScheduler
+#from buildbot.twcompat import implements
+from buildbot.scheduler import Try_Userpass
+from buildbot.scheduler import Nightly
+from buildbot.changes.svnpoller import SVNPoller, split_file_branches
+from buildbot.buildslave import BuildSlave
+
+#import TigrisMailSource
+import SVNMailNotifier
+from Feeder import WebStatusWithFeeds
+import private
+
+REPO="http://svn.apache.org/repos/asf/subversion/"
+
+s = factory.s
+
+# This is the dictionary that the buildmaster pays attention to. We also use
+# a shorter alias to save typing.
+c = BuildmasterConfig = {}
+
+# slaves
+c['slaves'] = [BuildSlave("fc1-gcc3.3.2-ia32", private.slavePwd),
+ BuildSlave("osx10.4-gcc4.0.1-ia32", private.slavePwd),
+ BuildSlave("xp-vs2003-ia32", private.slavePwd),
+ BuildSlave("dlr-fc3", private.slavePwd),
+ BuildSlave("eh-debsarge1", private.slavePwd),
+ BuildSlave("x64-ubuntu", private.hwrightPwd),
+ BuildSlave("x64-centos", private.wandPwd),
+]
+
+# sources
+c['change_source'] = SVNPoller(REPO,
+ split_file=split_file_branches,
+ svnbin=private.svnbin,
+ pollinterval=300)
+
+excludes = ["COMMITTERS", "STATUS", "CHANGES", "README", "INSTALL", "COPYING", "HACKING", "TRANSLATING", "BUGS", "www", "notes", "packages", "subversion/LICENSE", "subversion/po", "doc", "contrib", "tools", "dist.sh"]
+
+# function checks if this revision is interesting enough to trigger the builds.
+def isImportant(change):
+ if not excludes:
+ return True
+
+ for file in change.files:
+ triggerBuild = True
+ for pattern in excludes:
+ match = re.match(pattern, file)
+ if match:
+ triggerBuild = False
+ break
+ if triggerBuild:
+ return True
+
+# schedulers
+bs1 = AnyBranchScheduler("main",
+ [None, "branches/1.3.x", "branches/1.4.x", "branches/1.5.x",
+ "branches/1.6.x"],
+ 5*60, ["x86-macosx-gnu shared",
+ "debian-x86_64-32 shared gcc",
+ "x64-ubuntu gcc",
+ "x64-centos gcc",
+ ],
+ fileIsImportant=isImportant)
+
+ps1 = Nightly('daily-2pm-cet', ['x86-macosx-gnu shared daily ra_serf'], hour=14, minute=0)
+
+ts = Try_Userpass("try", ["x86-macosx-gnu shared", "debian-x86_64-32 shared gcc"],
+ port=private.tryPort, userpass=[(private.tryUser,private.tryPwd)] )
+c['schedulers'] = [bs1, ps1, ts]
+
+# steps and builders
+
+# define default set of steps, all under masters control.
+defSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], timeout=3600),
+ source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_neon", command=["../svncheck.sh", "fsfs", "ra_neon"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ ]
+
+defFact = factory.BuildFactory(defSteps)
+
+# define Windows custom steps
+winSteps = [source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Build", command=["..\svnbuild.bat"], timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_local", command=["..\svncheck.bat","fsfs","ra_local"], timeout=3600, flunkOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_dav", command=["..\svncheck.bat","fsfs","ra_dav"], timeout=3600, flunkOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_svn", command=["..\svncheck.bat","fsfs","ra_svn"], timeout=3600, flunkOnFailure=True),
+ shell.ShellCommand(name="Cleanup", command=["..\svnclean.bat"], timeout=3600),
+ ]
+winFact = factory.BuildFactory(winSteps)
+
+# define Windows 6 way steps
+win6wSteps = [source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Cleanup", command=["..\svnclean.bat"], timeout=3600),
+ shell.ShellCommand(name="Build", command=["..\svnbuild.bat", "%(branch)"], timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_local", command=["..\svncheck.bat","fsfs","ra_local"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ ]
+win6wFact = factory.BuildFactory(win6wSteps)
+
+# define set of steps for eh-x84_64-32, clean step comes first.
+ehSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], workdir='', timeout=3600),
+ source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_svn", command=["../svncheck.sh","fsfs","ra_svn"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ ]
+ehFact = factory.BuildFactory(ehSteps)
+
+# nightly build ra_serf
+serfSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], timeout=3600),
+ source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_serf", command=["../svncheck.sh", "fsfs", "ra_serf"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ ]
+serfFact = factory.BuildFactory(serfSteps)
+
+# define set of steps for x64-ubuntu, clean step comes first.
+x64ubSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], workdir='', timeout=3600),
+ source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_local", command=["../svncheck.sh","fsfs","ra_local"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=False),
+ shell.ShellCommand(name="Test bindings", command=["../svncheck-bindings.sh","fsfs","ra_local"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ ]
+x64ubFact = factory.BuildFactory(x64ubSteps)
+
+x64coSteps = [shell.ShellCommand(name="Cleanup", command=["../svnclean.sh"], timeout=3600),
+ source.SVN(baseURL=REPO,defaultBranch='trunk', timeout=3600),
+ shell.ShellCommand(name="Build", command=["../svnbuild.sh"], logfiles={"configlog": "config.log"}, timeout=3600, haltOnFailure=True),
+ shell.ShellCommand(name="Test fsfs+ra_local", command=["../svncheck.sh", "fsfs", "ra_neon"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ shell.ShellCommand(name="Test bindings", command=["../svncheck-bindings.sh","fsfs","ra_neon"], logfiles={"testlog": "tests.log"}, timeout=3600, flunkOnFailure=True),
+ ]
+x64coFact = factory.BuildFactory(x64coSteps)
+
+
+c['builders'] = [
+ {'name': "x86-macosx-gnu shared",
+ 'slavename': "osx10.4-gcc4.0.1-ia32",
+ 'builddir': "osx10.4-gcc4.0.1-ia32",
+ 'factory': defFact,
+ 'category': "prod",
+ },
+ {'name': "debian-x86_64-32 shared gcc",
+ 'slavename': "eh-debsarge1",
+ 'builddir': "eh-debsarge1",
+ 'factory': ehFact,
+ 'category': "prod",
+ },
+ {'name': "x86-macosx-gnu shared daily ra_serf",
+ 'slavename': "osx10.4-gcc4.0.1-ia32",
+ 'builddir': "osx10.4-gcc4.0.1-ia32-serf",
+ 'factory': serfFact,
+ 'category': "prod",
+ },
+ {'name': "x64-ubuntu gcc",
+ 'slavename': "x64-ubuntu",
+ 'builddir': "x64-ubuntu",
+ 'factory': x64ubFact,
+ 'category': "prod",
+ },
+ {'name': "x64-centos gcc",
+ 'slavename': "x64-centos",
+ 'builddir': "x64-centos",
+ 'factory': x64coFact,
+ 'category': "prod",
+ },
+]
+
+# 'slavePortnum' defines the TCP port to listen on. This must match the value
+# configured into the buildslaves (with their --master option)
+
+c['slavePortnum'] = private.slavePortnum
+
+# show webpage
+c['status'] = []
+c['status'].append(WebStatusWithFeeds(http_port="tcp:"+str(private.htmlPort)+":interface=127.0.0.1", allowForce=True))
+
+# send emails
+from buildbot.status import mail
+mailbody = 'Full details are available at: \n%(buildurl)s\n\n'\
+ 'Author list: %(blamelist)s\n\n'\
+ 'Build Slave: %(slave)s\n\n\n'\
+ 'Subversion Buildbot\n'\
+ '%(buildboturl)s\n\n\n'\
+ 'Last 100 lines of the build log (step: %(laststep)s ):\n\n %(lastlog)s'
+
+
+c['status'].append(SVNMailNotifier.SVNMailNotifier(
+ fromaddr="buildbot@mobsol.be",
+ extraRecipients=["notifications@subversion.apache.org"],
+ sendToInterestedUsers=False,
+ subject="svn %(branch)s r%(revision)s: %(result)s (%(builder)s)",
+ body=mailbody,
+ replytoaddr="dev@subversion.apache.org",
+ categories=["prod"],
+ relayhost=private.smtp))
+
+# from buildbot.status import words
+# c['status'].append(words.IRC(host="irc.example.com", nick="bb",
+# channels=["#example"]))
+
+
+# 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 'sources' set up). The debug tool uses the
+# same port number as the slaves do: 'slavePortnum'.
+
+#c['debugPassword'] = "debugpassword"
+
+# if you set 'manhole', you can telnet 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.
+# from buildbot.master import Manhole
+#c['manhole'] = Manhole(9999, "admin", "password")
+
+# the 'projectName' string will be used to describe the project that this
+# buildbot is working on. For example, it is used as the title of the
+# waterfall HTML page. The 'projectURL' string will be used to provide a link
+# from buildbot HTML pages to your project's home page.
+
+c['projectName'] = "Subversion"
+c['projectURL'] = "http://subversion.apache.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'] = "http://crest.ics.uci.edu/buildbot/"