@@ -20,19 +20,16 @@ c = BuildmasterConfig = {}
2020# slave name and password must be configured on the slave.
2121from buildbot.buildslave import BuildSlave
2222c[' slaves' ] = [
23- BuildSlave(" datatracker_lin_py27_1" , datatracker_lin_py27_1_pw),
24- BuildSlave(" datatracker_lin_py27_2" , datatracker_lin_py27_2_pw),
25- BuildSlave(" datatracker_lin_py27_3" , datatracker_lin_py27_3_pw),
26- BuildSlave(" datatracker_osx_py27_4" , datatracker_osx_py27_4_pw),
27- BuildSlave(" datatracker_lin_py27_5" , datatracker_lin_py27_5_pw),
28- BuildSlave(" datatracker_lin_py27_6" , datatracker_lin_py27_6_pw),
2923#
30- BuildSlave(" datatracker_lin_py36_1" , datatracker_lin_py36_1_pw),
31- BuildSlave(" datatracker_lin_py36_2" , datatracker_lin_py36_2_pw),
32- BuildSlave(" datatracker_lin_py36_3" , datatracker_lin_py36_3_pw),
33- BuildSlave(" datatracker_lin_py36_4" , datatracker_lin_py36_4_pw),
34- BuildSlave(" datatracker_lin_py36_5" , datatracker_lin_py36_5_pw),
35- BuildSlave(" datatracker_lin_py36_6" , datatracker_lin_py36_6_pw),
24+ BuildSlave(" dunkelfelder_lin_py36_1" , dunkelfelder_lin_py36_1_pw),
25+ BuildSlave(" dunkelfelder_lin_py36_2" , dunkelfelder_lin_py36_2_pw),
26+ BuildSlave(" dunkelfelder_lin_py36_3" , dunkelfelder_lin_py36_3_pw),
27+ BuildSlave(" dunkelfelder_lin_py36_4" , dunkelfelder_lin_py36_4_pw),
28+
29+ BuildSlave(" dornfelder_lin_py36_1" , dornfelder_lin_py36_1_pw),
30+ BuildSlave(" dornfelder_lin_py36_2" , dornfelder_lin_py36_2_pw),
31+ BuildSlave(" dornfelder_lin_py36_3" , dornfelder_lin_py36_3_pw),
32+ BuildSlave(" dornfelder_lin_py36_4" , dornfelder_lin_py36_4_pw),
3633]
3734
3835# 'protocols' contains information about protocols which master will use for
@@ -93,7 +90,7 @@ c['schedulers'] = [
9390 # Periodic Schedulers
9491 Nightly(name =" lin_test_old_libs" , hour =16, minute =12, branch =" trunk" , builderNames =[" Verify Minimum Libs" ],),
9592 Nightly(name =" lin_test_libs" , hour =16, minute =42, branch =" trunk" , builderNames =[" Verify Latest Libs" ],),
96- Nightly(name =" crawler" , hour =9 , minute =00, branch =" trunk" , onlyIfChanged =True, builderNames =[" Test-Crawler" ],),
93+ Nightly(name =" crawler" , hour =23 , minute =00, branch =" trunk" , onlyIfChanged =True, builderNames =[" Test-Crawler" ],),
9794
9895 # Force schedulers
9996 ForceScheduler(name =" force_pyflakes" , builderNames =[" Check PyFlakes" ]),
@@ -311,6 +308,7 @@ c['builders'] = []
311308# -*- section Builder_Run_pyflakes -*-
312309
313310factory = BuildFactory()
311+ factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
314312factory.addStep(SVN(
315313 username =' buildbot@tools.ietf.org' ,
316314 descriptionDone =" svn update" ,
@@ -320,7 +318,13 @@ factory.addStep(SVN(
320318 repourl =Interpolate(' https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s' ),
321319 descriptionSuffix =[Interpolate(' %(src::branch)s %(src::revision)s' )],
322320 ))
323- factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
321+ factory.addStep(ShellCommand(
322+ descriptionDone =" install requirements" ,
323+ workdir =Interpolate(' build/%(src::branch)s' ),
324+ haltOnFailure =True,
325+ usePTY =False,
326+ command =[" pip" , " install" , " -r" , " requirements.txt" ],
327+ ))
324328factory.addStep(ShellCommand(
325329 descriptionDone =" seting up settings_local.py" ,
326330 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -338,21 +342,23 @@ factory.addStep(PyFlakes(
338342factory.addStep(ShellCommand(
339343 descriptionDone =" mark as passed" ,
340344 workdir =Interpolate(' build/%(src::branch)s' ),
345+ flunkOnFailure =False,
341346 usePTY =False,
342347 command =[" svn" , " --username=buildbot@tools.ietf.org" , " --non-interactive" ,
343348 " propset" , " --revprop" , " -r" , Property(' got_revision' ), " test:pyflakes" , " passed" ],
344349 ))
345350
346351c[' builders' ].append(BuilderConfig(name =" Check PyFlakes" , factory =factory, category =" 1. trunk" ,
347- slavenames =[" datatracker_lin_py36_1 " , " datatracker_lin_py36_4 " , ]))
352+ slavenames =[" dunkelfelder_lin_py36_1 " , " dornfelder_lin_py36_1 " , ]))
348353c[' builders' ].append(BuilderConfig(name =" [branch] Check PyFlakes" , factory =factory, category =" 2. branch" ,
349- slavenames =[" datatracker_lin_py36_2 " , ]))
354+ slavenames =[" dunkelfelder_lin_py36_2 " , " dornfelder_lin_py36_2 " , ]))
350355c[' builders' ].append(BuilderConfig(name =" [personal] Check PyFlakes" , factory =factory, category =" 3. personal" ,
351- slavenames =[" datatracker_lin_py36_3 " , ]))
356+ slavenames =[" dunkelfelder_lin_py36_2 " , ]))
352357
353358# -*- section Builder_TestSuite -*-
354359
355360factory = BuildFactory()
361+ factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
356362factory.addStep(SVN(
357363 username =' buildbot@tools.ietf.org' ,
358364 descriptionDone =" svn update" ,
@@ -362,7 +368,7 @@ factory.addStep(SVN(
362368 repourl =Interpolate(' https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s' ),
363369 descriptionSuffix =[Interpolate(' %(src::branch)s %(src::revision)s' )],
364370 ))
365- factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' )))
371+ factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' ), usePTY =False ))
366372factory.addStep(ShellCommand(
367373 descriptionDone =" remove tmp-* dirs" ,
368374 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -377,7 +383,6 @@ factory.addStep(ShellCommand(
377383 usePTY =False,
378384 command =[" pip" , " install" , " -r" , " requirements.txt" ],
379385 ))
380- factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
381386factory.addStep(ShellCommand(
382387 descriptionDone =" copy settings_local.py" ,
383388 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -403,22 +408,32 @@ factory.addStep(UnitTest(
403408factory.addStep(ShellCommand(
404409 descriptionDone =" mark as passed" ,
405410 workdir =Interpolate(' build/%(src::branch)s' ),
411+ flunkOnFailure =False,
406412 usePTY =False,
407413 command =[" svn" , " --username=buildbot@tools.ietf.org" , " --non-interactive" ,
408414 " propset" , " --revprop" , " -r" , Property(' got_revision' ), " test:unittest" , " passed" ],
409415 ))
410416
411417c[' builders' ].append(BuilderConfig(name =" Test Suite" , factory =factory, category =" 1. trunk" ,
412- slavenames =[" datatracker_lin_py36_1 " , " datatracker_lin_py36_4 " , ]))
418+ slavenames =[" dunkelfelder_lin_py36_1 " , " dornfelder_lin_py36_1 " , ]))
413419c[' builders' ].append(BuilderConfig(name =" [branch] Test Suite" , factory =factory, category =" 2. branch" ,
414- slavenames =[" datatracker_lin_py36_2 " , ]))
420+ slavenames =[" dunkelfelder_lin_py36_2 " , " dornfelder_lin_py36_2 " , ]))
415421c[' builders' ].append(BuilderConfig(name =" [personal] Test Suite" , factory =factory, category =" 3. personal" ,
416- slavenames =[" datatracker_lin_py36_3 " , ]))
422+ slavenames =[" dunkelfelder_lin_py36_2 " , " dornfelder_lin_py36_2 " , ]))
417423
418424
419425# -*- section Builder_TestCrawler -*-
420426
421427factory = BuildFactory()
428+ factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
429+ factory.addStep(ShellCommand(
430+ descriptionDone =" update database" ,
431+ workdir =Interpolate(' build/%(src::branch)s' ),
432+ haltOnFailure =True,
433+ usePTY =False,
434+ timeout =3600, # 1 hour
435+ command =[" docker/updatedb" , " -q" ],
436+ ))
422437factory.addStep(SVN(
423438 username =' buildbot@tools.ietf.org' ,
424439 descriptionDone =" svn update" ,
@@ -428,15 +443,14 @@ factory.addStep(SVN(
428443 repourl =Interpolate(' https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s' ),
429444 descriptionSuffix =[Interpolate(' %(src::branch)s %(src::revision)s' )],
430445 ))
431- factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' )))
446+ factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' ), usePTY =False ))
432447factory.addStep(ShellCommand(
433448 descriptionDone =" install requirements" ,
434449 workdir =Interpolate(' build/%(src::branch)s' ),
435450 haltOnFailure =True,
436451 usePTY =False,
437452 command =[" pip" , " install" , " -r" , " requirements.txt" ],
438453 ))
439- factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
440454factory.addStep(ShellCommand(
441455 descriptionDone =" copy settings_local.py" ,
442456 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -451,6 +465,14 @@ factory.addStep(ShellCommand(
451465 usePTY =False,
452466 command =[" ietf/manage.py" , " migrate" ],
453467 ))
468+ # This will not only do a prelimnary sanity check, but also patch libs as needed:
469+ factory.addStep(ShellCommand(
470+ descriptionDone =" run django checks" ,
471+ workdir =Interpolate(' build/%(src::branch)s' ),
472+ haltOnFailure =True,
473+ usePTY =False,
474+ command =[" ietf/manage.py" , " check" ],
475+ ))
454476factory.addStep(TestCrawlerShellCommand(
455477 workdir =Interpolate(' build/%(src::branch)s' ),
456478 haltOnFailure =True,
@@ -461,13 +483,14 @@ factory.addStep(TestCrawlerShellCommand(
461483factory.addStep(ShellCommand(
462484 descriptionDone =" mark as passed" ,
463485 workdir =Interpolate(' build/%(src::branch)s' ),
486+ flunkOnFailure =False,
464487 usePTY =False,
465488 command =[" svn" , " --username=buildbot@tools.ietf.org" , " --non-interactive" ,
466489 " propset" , " --revprop" , " -r" , Property(' got_revision' ), " test:crawler" , " passed" ],
467490 ))
468491
469492c[' builders' ].append(BuilderConfig(name =" Test-Crawler" , factory =factory, category =" 1. trunk" ,
470- slavenames =[" datatracker_lin_py36_6 " , ]))
493+ slavenames =[" dunkelfelder_lin_py36_4 " , ]))
471494
472495
473496# -*- section Builder_Verify_Old_Libs -*-
@@ -479,6 +502,7 @@ c['builders'].append(BuilderConfig(name="Test-Crawler", factory=factory, categor
479502# dependencies.
480503
481504factory = BuildFactory()
505+ factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
482506factory.addStep(ShellCommand(
483507 descriptionDone =" remove tweaked requirements" ,
484508 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -497,7 +521,7 @@ factory.addStep(SVN(
497521 repourl =Interpolate(' https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s' ),
498522 descriptionSuffix =[Interpolate(' %(src::branch)s %(src::revision)s' )],
499523 ))
500- factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' )))
524+ factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' ), usePTY =False ))
501525factory.addStep(ShellCommand(
502526 descriptionDone =" edit requirements" ,
503527 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -512,7 +536,6 @@ factory.addStep(ShellCommand(
512536 usePTY =False,
513537 command =[" pip" , " install" , " --upgrade" , " -r" , " requirements.txt" ],
514538 ))
515- factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
516539factory.addStep(ShellCommand(
517540 descriptionDone =" seting up settings_local.py" ,
518541 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -542,10 +565,10 @@ factory.addStep(UnitTest(
542565 command =[" ietf/manage.py" , " test" , " --settings=settings_sqlitetest" , " --verbosity=2" , ],
543566 ))
544567c[' builders' ].append(BuilderConfig(name =" Verify Minimum Libs" , factory =factory, category =" 1. trunk" ,
545- slavenames =[" datatracker_lin_py36_5 " , ]))
568+ slavenames =[" dornfelder_lin_py36_3 " , ]))
546569
547570
548- # -*- section Builder_Dependencies -*-
571+ # -*- section Verify_Latest_Libs -*-
549572
550573# This build runs pip install --upgrade, to make sure that we install the latest version of all
551574# dependencies, in order to get an indication if/when an incompatibility turns up with a new
@@ -554,6 +577,7 @@ c['builders'].append(BuilderConfig(name="Verify Minimum Libs", factory=factory,
554577# dependencies.
555578
556579factory = BuildFactory()
580+ factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
557581factory.addStep(SVN(
558582 username =' buildbot@tools.ietf.org' ,
559583 descriptionDone =" svn update" ,
@@ -564,15 +588,14 @@ factory.addStep(SVN(
564588 repourl =Interpolate(' https://svn.tools.ietf.org/svn/tools/ietfdb/%(src::branch:~trunk)s' ),
565589 descriptionSuffix =[Interpolate(' %(src::branch)s %(src::revision)s' )],
566590 ))
567- factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' )))
591+ factory.addStep(RemovePYCs(workdir =Interpolate(' build/%(src::branch)s' ), usePTY =False ))
568592factory.addStep(ShellCommand(
569593 descriptionDone =" install/upgrade requirements" ,
570594 workdir =Interpolate(' build/%(src::branch)s' ),
571595 haltOnFailure =True,
572596 usePTY =False,
573597 command =[" pip" , " install" , " --upgrade" , " -r" , " requirements.txt" ],
574598 ))
575- factory.addStep(SetPropertiesFromEnv(variables =[' HOME' ,]))
576599factory.addStep(ShellCommand(
577600 descriptionDone =" seting up settings_local.py" ,
578601 workdir =Interpolate(' build/%(src::branch)s' ),
@@ -603,7 +626,7 @@ factory.addStep(UnitTest(
603626 ))
604627
605628c[' builders' ].append(BuilderConfig(name =" Verify Latest Libs" , factory =factory, category =" 1. trunk" ,
606- slavenames =[" datatracker_lin_py36_5 " , ]))
629+ slavenames =[" dornfelder_lin_py36_3 " , ]))
607630
608631
609632# ###### STATUS TARGETS
@@ -673,7 +696,7 @@ c['status'].append(mail.MailNotifier(
673696# installation's html.WebStatus home page (linked to the
674697# 'titleURL') and is embedded in the title of the waterfall HTML page.
675698
676- c[' title' ] = " IETF Datatracker"
699+ c[' title' ] = " Buildbot: IETF Datatracker"
677700c[' titleURL' ] = " https://datatracker.ietf.org/"
678701
679702# the 'buildbotURL' string should point to the location where the buildbot's
0 commit comments