@@ -8,7 +8,7 @@ from buildbot_passwords import *
88# a shorter alias to save typing.
99c = BuildmasterConfig = {}
1010
11- ####### BUILDSLAVES
11+ # -*- section BuildSlaves -*-
1212
1313# The 'slaves' list defines the set of recognized buildslaves. Each element is
1414# a BuildSlave object, specifying a unique slave name and password. The same
@@ -19,6 +19,7 @@ c['slaves'] = [
1919 BuildSlave ("datatracker_lin_py27_2" , datatracker_lin_py27_2_pw ),
2020 BuildSlave ("datatracker_lin_py27_3" , datatracker_lin_py27_3_pw ),
2121 BuildSlave ("datatracker_osx_py27_4" , datatracker_osx_py27_4_pw ),
22+ BuildSlave ("datatracker_lin_py27_5" , datatracker_lin_py27_5_pw ),
2223]
2324
2425# 'protocols' contains information about protocols which master will use for
@@ -30,6 +31,7 @@ c['slaves'] = [
3031c ['protocols' ] = {'pb' : {'host' :'zinfandel.tools.ietf.org' , 'port' : 9989 }}
3132
3233####### CHANGESOURCES
34+ # -*- section ChangeSources -*-
3335
3436# the 'change_source' setting tells the buildmaster how it should find out
3537# about source code changes.
@@ -46,12 +48,14 @@ c['change_source'] = [
4648]
4749
4850####### SCHEDULERS
51+ # -*- section Schedulers -*-
4952
5053# Configure the Schedulers, which decide how to react to incoming changes. In this
5154# case, just kick off a 'runtests' build
5255
5356from buildbot .schedulers .basic import SingleBranchScheduler , AnyBranchScheduler
5457from buildbot .schedulers .forcesched import ForceScheduler
58+ from buildbot .schedulers .timed import Nightly
5559from buildbot .changes import filter
5660c ['schedulers' ] = [
5761 # Branch schedulers
@@ -77,6 +81,8 @@ c['schedulers'] = [
7781 change_filter = filter .ChangeFilter (branch_re = 'personal/.*' )),
7882 AnyBranchScheduler (name = "osx_test_personal" ,treeStableTimer = 60 * 5 , builderNames = ["[personal] Test Suite (OS X)" ],
7983 change_filter = filter .ChangeFilter (branch_re = 'personal/.*' )),
84+ # Periodic Schedulers
85+ Nightly (name = "lin_test_libs" , hour = 16 , minute = 42 , branch = "trunk" , builderNames = ["Verify Latest Libs" ],),
8086 # Force schedulers
8187 ForceScheduler (name = "Force PyFlakes" , builderNames = ["Check PyFlakes" ]),
8288 ForceScheduler (name = "Force Test Suite" , builderNames = ["Test Suite" ]),
@@ -93,6 +99,7 @@ c['schedulers'] = [
9399]
94100
95101####### BUILDERS
102+ # -*- section Builders -*-
96103
97104# The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
98105# what steps, and which slaves can execute them. Note that any particular build will
@@ -195,7 +202,8 @@ class UnitTest(WarningCountingShellCommand):
195202
196203c ['builders' ] = []
197204
198- # --- Run pyflakes ---
205+ # -*- section Builder_Run_pyflakes -*-
206+
199207factory = BuildFactory ()
200208factory .addStep (SVN (
201209 username = 'buildbot@tools.ietf.org' ,
@@ -231,7 +239,8 @@ c['builders'].append(BuilderConfig(name="[branch] Check PyFlakes", factory=facto
231239c ['builders' ].append (BuilderConfig (name = "[personal] Check PyFlakes" , factory = factory , category = "3. personal" ,
232240 slavenames = ["datatracker_lin_py27_1" , "datatracker_lin_py27_2" , "datatracker_lin_py27_3" ]))
233241
234- # --- Run tests ---
242+ # -*- section Builder_TestSuite -*-
243+
235244factory = BuildFactory ()
236245factory .addStep (SVN (
237246 username = 'buildbot@tools.ietf.org' ,
@@ -251,7 +260,7 @@ factory.addStep(ShellCommand(
251260factory .addStep (UnitTest (
252261 workdir = Interpolate ('build/%(src::branch)s' ),
253262 haltOnFailure = True ,
254- command = ["ietf/manage.py" , "test" , "--settings=settings_sqlitetest" ],
263+ command = ["ietf/manage.py" , "test" , "--settings=settings_sqlitetest" , "--verbosity=2" , ],
255264 ))
256265# This should be the last action
257266factory .addStep (ShellCommand (
@@ -269,8 +278,15 @@ c['builders'].append(BuilderConfig(name="[personal] Test Suite", factory=factory
269278 slavenames = ["datatracker_lin_py27_1" , "datatracker_lin_py27_2" , "datatracker_lin_py27_3" ]))
270279
271280
272- # --- Run tests on os-x ---
281+ # -*- section Builder_TestSuiteOSX -*-
282+
273283factory = BuildFactory ()
284+ factory .addStep (ShellCommand (
285+ descriptionDone = "svn cleanup" ,
286+ workdir = Interpolate ('build/%(src::branch)s' ),
287+ haltOnFailure = True ,
288+ command = ["svn" , "cleanup" ],
289+ ))
274290factory .addStep (SVN (
275291 username = 'buildbot@tools.ietf.org' ,
276292 descriptionDone = "svn update" ,
@@ -289,7 +305,7 @@ factory.addStep(ShellCommand(
289305factory .addStep (UnitTest (
290306 workdir = Interpolate ('build/%(src::branch)s' ),
291307 haltOnFailure = True ,
292- command = ["ietf/manage.py" , "test" , "--settings=settings_sqlitetest" , "--skip-coverage" ],
308+ command = ["ietf/manage.py" , "test" , "--settings=settings_sqlitetest" , "--skip-coverage" , "--verbosity=2" , ],
293309 ))
294310
295311c ['builders' ].append (BuilderConfig (name = "Test Suite (OS X)" , factory = factory , category = "1. trunk" ,
@@ -300,7 +316,8 @@ c['builders'].append(BuilderConfig(name="[personal] Test Suite (OS X)", factory=
300316 slavenames = ["datatracker_osx_py27_4" ]))
301317
302318
303- # --- Run test-crawler ---
319+ # -*- section Builder_TestCrawler -*-
320+
304321factory = BuildFactory ()
305322factory .addStep (SVN (
306323 username = 'buildbot@tools.ietf.org' ,
@@ -334,7 +351,48 @@ c['builders'].append(BuilderConfig(name="Test-Crawler", factory=factory, categor
334351 slavenames = ["datatracker_lin_py27_1" , ]))
335352
336353
354+ # -*- section Builder_Dependencies -*-
355+
356+ # This build runs pip install --upgrade, to make sure that we install the latest version of all
357+ # dependencies, in order to get an indication if/when an incompatibility turns up with a new
358+ # version of a dependency. The other test suite builders *don't* use --upgrade, in order to not
359+ # change the external test conditions and produce spurious errors because of version changes in
360+ # dependencies.
361+
362+ factory = BuildFactory ()
363+ factory .addStep (SVN (
364+ username = 'buildbot@tools.ietf.org' ,
365+ descriptionDone = "svn update" ,
366+ workdir = Interpolate ('build/%(src::branch)s' ),
367+ haltOnFailure = True ,
368+ repourl = Interpolate ('https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s' ),
369+ descriptionSuffix = [Interpolate ('%(src::branch)s %(src::revision)s' )],
370+ ))
371+ factory .addStep (RemovePYCs (workdir = Interpolate ('build/%(src::branch)s' )))
372+ factory .addStep (ShellCommand (
373+ descriptionDone = "install/upgrade requirements" ,
374+ workdir = Interpolate ('build/%(src::branch)s' ),
375+ haltOnFailure = True ,
376+ command = ["pip" , "install" , "--upgrade" , "-r" , "requirements.txt" ],
377+ ))
378+ factory .addStep (ShellCommand (
379+ descriptionDone = "list installed pyton modules" ,
380+ workdir = Interpolate ('build/%(src::branch)s' ),
381+ haltOnFailure = True ,
382+ command = ["pip" , "list" ],
383+ ))
384+ factory .addStep (UnitTest (
385+ workdir = Interpolate ('build/%(src::branch)s' ),
386+ haltOnFailure = True ,
387+ command = ["ietf/manage.py" , "test" , "--settings=settings_sqlitetest" , "--verbosity=2" , ],
388+ ))
389+
390+ c ['builders' ].append (BuilderConfig (name = "Verify Latest Libs" , factory = factory , category = "1. trunk" ,
391+ slavenames = ["datatracker_lin_py27_5" ]))
392+
393+
337394####### STATUS TARGETS
395+ # -*- section StatusTargets -*-
338396
339397# 'status' is a list of Status Targets. The results of each build will be
340398# pushed to these targets. buildbot/status/*.py has a variety to choose from,
@@ -381,13 +439,20 @@ class UsernameIsEmailAddress():
381439 return name
382440
383441c ['status' ].append (mail .MailNotifier (
384- builders = ['Check Pyflakes' , 'Test Suite' , 'Test-Crawler' , ],
385442 fromaddr = 'buildbot@tools.ietf.org' ,
443+ sendToInterestedUsers = False ,
386444 extraRecipients = ['henrik@levkowetz.com' ,],
445+ mode = "problem" ,
446+ ))
447+
448+ c ['status' ].append (mail .MailNotifier (
449+ fromaddr = 'buildbot@tools.ietf.org' ,
387450 lookup = UsernameIsEmailAddress (),
451+ mode = "problem" ,
388452 ))
389453
390454####### PROJECT IDENTITY
455+ # -*- section Project -*-
391456
392457# the 'title' string will appear at the top of this buildbot
393458# installation's html.WebStatus home page (linked to the
0 commit comments