[Buildbot-devel] buildbot-0.3.5 released, now with (some) Subversion support!

Brian Warner warner at lothar.com
Sat Sep 20 01:24:49 UTC 2003

I've just released buildbot-0.3.5 . This is a slightly experimental release,
as it moves to Twisted's "newcred" authentication framework. Note that
buildslaves must be updated to speak to the new buildmaster, and that both
slaves and the master will require Twisted-1.0.7 . Also note that if you use
FreshCVS, you may need to add an argument to your sources= setup to speak
oldcred to the FreshCVS daemon (full details are in the NEWS file).

Apart from that, the other big change is the gradual introduction of
Subversion support, thanks to Christopher Armstrong ('radix', who also
serves as the Twisted release manager).

As usual, the release is signed by my public key (0x03A5E108). The MD5 sum of
the tarball is:

 8453f18502dd2b91bc112c3e034ee0e7  buildbot-0.3.5.tar.gz

Please give it a try and report any problems to the mailing list or the bug

The BuildBot is a system to automate the compile/test cycle required by most
software projects to validate code changes. It builds and tests the tree
each time a change is committed, providing status updates through a web page
or other protocols. Please visit http://buildbot.sf.net for more details.

Have a well-accredited day,

----- new NEWS contents ----

* Release 0.3.5 (19 Sep 2003)

** newcred

Buildbot has moved to "newcred", a new authorization framework provided by
Twisted, which is a good bit cleaner and easier to work with than the
"oldcred" scheme in older versions. This causes both buildmaster and
buildslaves to depend upon Twisted 1.0.7 or later. The interface to
'makeApp' has changed somewhat (the multiple kinds of remote connections all
use the same TCP port now).

Old buildslaves will get "_PortalWrapper instance has no attribute
'remote_username'" errors when they try to connect. They must be upgraded.

The FreshCVSSource uses PB to connect to the CVSToys server. This has been
upgraded to use newcred too. If you get errors (TODO: what do they look
like?) in the log when the buildmaster tries to connect, you need to upgrade
your FreshCVS service or use the 'useOldcred' argument when creating your
FreshCVSSource. This is a temporary hack to allow the buildmaster to talk to
oldcred CVSToys servers. Using it will trigger deprecation warnings. It will
go away eventually.

In conjunction with this change, makeApp() now accepts a password which can
be applied to the debug service.

** new features

*** "copydir" for CVS checkouts

The CVS build step can now accept a "copydir" parameter, which should be a
directory name like "source" or "orig". If provided, the CVS checkout is
done once into this directory, then copied into the actual working directory
for compilation etc. Later updates are done in place in the copydir, then
the workdir is replaced with a copy.

This reduces CVS bandwidth (update instead of full checkout) at the expense
of twice the disk space (two copies of the tree).

*** Subversion (SVN) support

Radix (Christopher Armstrong) contributed early support for building
Subversion-based trees. The new 'SVN' buildstep behaves roughly like the
'CVS' buildstep, and the contrib/svn_buildbot.py script can be used as a
checkin trigger to feed changes to a running buildmaster.

** notable bugfixes

*** .tap file generation

We no longer set the .tap filename, because the buildmaster/buildslave
service might be added to an existing .tap file and we shouldn't presume to
own the whole thing. You may want to manually rename the "buildbot.tap" file
to something more meaningful (like "buildslave-bot1.tap").

*** IRC reconnect

If the IRC server goes away (it was restarted, or the network connection was
lost), the buildmaster will now schedule a reconnect attempt.

*** w32 buildslave fixes

An "rm -rf" was turned into shutil.rmtree on non-posix systems.

---- new Changelog contents ----

2003-09-19  Brian Warner  <warner at lothar.com>

	* setup.py (version): Releasing buildbot-0.3.5

2003-09-19  Brian Warner  <warner at lothar.com>

	* NEWS: add post-0.3.4 notes

	* README (REQUIREMENTS): note twisted-1.0.7 requirement

	* MANIFEST.in: add contrib/*

	* docs/examples/twisted_master.py (twisted_app): all build slaves must
	use a remote root now: cvs.twistedmatrix.com

	* buildbot/changes/freshcvs.py (FreshCVSNotifiee.connect): update
	to newcred
	(FreshCVSNotifieeOldcred): but retain a class that uses oldcred for
	compatibility with old servers
	(FreshCVSSource.start): and provide a way to use it
	(FreshCVSNotifiee.disconnect): handle unconnected notifiee

	* docs/examples/twisted_master.py (twisted_app): update to new
	makeApp interface.
	(twisted_app): listen on new ~buildbot socket
	(twisted_app): Twisted CVS has moved to cvs.twistedmatrix.com

	* buildbot/process/process_twisted.py: Use 'copydir' on CVS steps
	to reduce cvs bandwidth (update instead of full checkout)

2003-09-11  Brian Warner  <warner at lothar.com>

	* contrib/fakechange.py: demo how to connect to the changemaster
	port. You can use this technique to submit changes to the
	buildmaster from source control systems that offer a hook to run a
	script when changes are committed.

	* contrib/debugclient.py: tool to connect to the debug port. You
	can use it to force builds, submit fake changes, and wiggle the
	builder state

	* buildbot/master.py: the Big NewCred Reorganization. Use a single
	'Dispatcher' realm to handle all the different kinds of
	connections and Perspectives: buildslaves, the changemaster port,
	the debug port, and the status client port. NewCredPerspectives
	now have .attached/.detached methods called with the remote 'mind'
	reference, much like old perspectives did. All the pb.Services
	turned into ordinary app.ApplicationServices .
	(DebugService): went away, DebugPerspectives are now created
	directly by the Dispatcher.
	(makeApp): changed interface a little bit

	* buildbot/changes/changes.py: newcred
	* buildbot/status/client.py: newcred

	* buildbot/clients/base.py: newcred client side changes
	* buildbot/bot.py: ditto

	* docs/examples/glib_master.py: handle new makeApp() interface
	* docs/examples/twisted_master.py: ditto

	* buildbot/pbutil.py (NewCredPerspective): add a helper class to
	base newcred Perspectives on. This should go away once Twisted
	itself provides something sensible.

2003-09-11  Christopher Armstrong  <radix at twistedmatrix.com>

	* contrib/svn_buildbot.py: A program that you can call from your
	SVNREPO/hooks/post-commit file that will notify a BuildBot master
	when a change in an SVN repository has happened. See the top of
	the file for some minimal usage info.

2003-09-10  Christopher Armstrong  <radix at twistedmatrix.com>

	* buildbot/slavecommand.py (ArglistCommand): Add new
	ArglistCommand that takes an argument list rather than a string as
	a parameter. Using a st.split() for argv is very bad.

	* buildbot/slavecommand.py (SVNFetch): Now has the ability to
	update to a particular revision rather than always checking out
	(still not very smart about it, there may be cases where the
	checkout becomes inconsistent).

2003-09-10  Christopher Armstrong  <radix at twistedmatrix.com>

	* buildbot/{bot.py,slavecommand.py,process/step.py}: Rudimentary
	SVN fetch support. It can checkout (not update!) a specified
	revision from a specified repository to a specified directory.

	* buildbot/status/progress.py (Expectations.update): Fix an
	obvious bug (apparently created by the change described in the
	previous ChangeLog message) by moving a check to *after* the
	variable it checks is defined.

2003-09-08  Brian Warner  <warner at lothar.com>

	* buildbot/status/progress.py (Expectations.update): hack to catch
	an exception TTimo sees: sometimes the update() method seems to
	get called before the step has actually finished, so the .stopTime
	is not set, so no totalTime() is available and we average None
	with the previous value. Catch this and just don't update the
	metrics, and emit a log message.

2003-08-24  Brian Warner  <warner at lothar.com>

	* buildbot/process/base.py (BasicBuildFactory): accept 'cvsCopy'
	parameter to set copydir='original' in CVS commands.

	* buildbot/process/step.py (CVS): accept 'copydir' parameter.

	* buildbot/slavecommand.py (CVSCommand): add 'copydir' parameter,
	which tells the command to maintain a separate original-source CVS
	workspace. For each build, this workspace will be updated, then
	the tree copied into a new workdir. This reduces CVS bandwidth
	(from a full checkout to a mere update) while doubling the local
	disk usage (to keep two copies of the tree).

2003-08-21  Brian Warner  <warner at lothar.com>

	* buildbot/status/event.py (Logfile.addEntry): if the master web
	server dies while we're serving a page, request.write raises
	pb.DeadReferenceError . Catch this and treat it like a
	notifyFinish event by dropping the request.

2003-08-18  Brian Warner  <warner at lothar.com>

	* buildbot/status/words.py (IrcStatusBot.command_FORCE): complain
	(instead of blowing up) if a force-build command is given without
	a reason field

	* buildbot/changes/changes.py (ChangeMaster.getChangeNumbered):
	don't blow up if there aren't yet any Changes in the list

2003-08-02  Brian Warner  <warner at lothar.com>

	* buildbot/bot.py (updateApplication): don't set the .tap name,
	since we shouldn't assume we own the whole .tap file

	* buildbot/bb_tap.py (updateApplication): clean up code, detect
	'mktap buildbot' (without a subcommand) better

2003-07-29  Brian Warner  <warner at lothar.com>

	* buildbot/status/words.py
	(IrcStatusFactory.clientConnectionLost): when we lose the
	connection to the IRC server, schedule a reconnection attempt.

	* buildbot/slavecommand.py (CVSCommand.doClobber): on non-posix,
	use shutil.rmtree instead of forking off an "rm -rf" command.
	rmtree may take a while and will block until it finishes, so we
	use "rm -rf" if available.

	* docs/examples/twisted_master.py: turn off kqreactor, it hangs
	freebsd buildslave badly

	* setup.py (version): bump to 0.3.4+ while between releases

More information about the devel mailing list