[Buildbot-devel] Scheduler work coming along nicely
Brian Warner
warner-buildbot at lothar.com
Thu Jul 14 01:41:26 UTC 2005
Hi all. Sorry to be so slow in responding to the mailing list.. I think I'm
about five days behind. I'll respond to everything eventually.
Most of my buildbot time has been consumed by work on the new Scheduler code.
Just a few minutes ago I got the build-on-branch unit tests to pass. I got
Locks working yesterday, and scheduler.Dependent got finished last weekend,
so the code is looking pretty good. There are a few more issues I want to
address before I merge this (arch) branch into the CVS mainline, but it's
getting close. Mostly I want to make sure that it is good enough for
adventurous folk to use before I put it on the trunk. The *really*
adventurous can pull a copy from the Arch/Bazaar repository that's tracking
this branch: http://arch.lothar.com/warner@monolith.lothar.com--2005 (version
name is buildbot--usebranches--0).
Just to share what I'm thinking, here's my personal TODO list for the next
release. Items with '#' in the first column are finished.
features:
# Dependencies
a way to ask about the status of each Change: complete on which Schedulers,
waiting for dependencies on which, ignored by which
# Locks (per-step? per-build? scoped to the slave or the whole buildmaster?)
a scheme for Schedulers to subscribe to all ChangeSources, so it will be
clear how to write others that only subscribe to some or none
updating Status targets to match new stuff
HTML:
waterfall: N slaves (instead of 0 or 1), showing Scheduler status
new page with one column per Scheduler, track BuildSets (still
chronological)
new page with one box per scheduler (not chronological)
new front page with links to status pages
make it easy to insert arbitrary URL objects
Mail: something to watch Schedulers/BuildSets instead of Builders
IRC: query Schedulers, submit BuildSets
IStatus: IScheduler, IBuildSetStatus, IBuildRequestStatus?
IBuilderStatus.getState: redefine
IBuildRequestControl: make sure the Control objects are returned at the
right times
VC branches:
svn url-to-branch function, #branch-to-url function
# checkout-vs-update of arbitrary branches, .buildbot-branch stampfiles
try
buildmaster-watching Scheduler
docs for it all
tests:
# VC branches: need to create a new repository tarball with branches
BuildSet/Scheduler: in test_buildreq
SlaveBuilder:
verify multiple slaves connected at the same time
claiming a slave for a new build
slaveping
failing a slaveping moves the request to the front of the list
slave in the slaveping state is not claimable by a new build
Ping
try
design issues:
sharing files (build products) between Builders
'try': two command paths:
1 (ssh): create a command queue maildir in the buildmaster's space,
admin sets the ownership/permissions to only grant write access
to trusted developers. 'buildbot try' formats an rfc822-style
message (sourcestamp goes in a header, patch goes in the body)
and adds it to the queuedir. The config file entries used by
'buildbot try' either specify a local queuedir (for which write
and mv are used) or a remote one (using scp and ssh). +: quite
secure. -: requires fiddling outside the buildmaster config.
2 (pb): each developer gets a username/passwd pair, known to the
buildmaster. 'buildbot try' connects to the slaveport and
identifies itself as that user, then sends a PB command to force
the build (with the sourcestamp+diff as arguments). +: don't
need a special group or filesystem fiddling. -: depending upon
the Cred mechanics used, the password may be passed in plaintext
or plaintext-equivalent.
maybe offer both?
use/require Nevow for HTML pages? how would this affect twisted1-vs-2?
(nevow-0.4.1 uses z.i if available, nevow-0.5pre uses z.i unconditionally)
framework for long-term build stats?
compatibility:
slave's vc-command args
Other items to include in the next release:
darcs tree (tailor) for win32 buildslave
publish metabuildbot, probably move slaves to a more capable machine
base URL needs fixing
that win32 command-not-really-running kill-old-command bug
panic when saved build pickle already exists? or overwrite silently?
the 100k logfile stall with twisted-1.3
change Mail object to include logfiles even without python2.3's email module
change Mail object to include URL for the specific Build
remove all uses of forceBuild other than the deprecation test, consider
removing it altogether (I'm not sure it was ever really exposed)
verify that deferredResult is gone from unit tests under retrial
Things to do soon, but not in the 0.7.0 release:
Monotone
mercurial
cogito tests / branches
anyway, that's the day's update.. now back to the code.
cheers,
-Brian
More information about the devel
mailing list