Greetings, all:

Let me say that I think this a very good idea; I've hacked on the Draco
source* to get this same functionality, albeit hardwired and
site-specific.  As part of our continuous build process, we run our unit
tests, which generate reports and dump them to a web server for later
perusal.  At the moment, we don't have a lot, and it wouldn't kill us to
do an entire, "pristine" build and test each time.  However, we foresee
in the (hopefully not-too-distant) future having enough test coverage to
make this approach infeasible, as eventually full builds will take
longer than the developers do between commits.

We have NAnt do our builds.  In order to specify source files, we
generate filesets from SharpDevelop project files using a custom task
(we also determine inter-assembly dependencies and build/test
accordingly).  These project files are of course versioned in source
control (SVN) alongside the source.  In this way, we explicitly list
every single source file that needs to be compiled into a particular
assembly (although, by generating the filesets from the #D projects, we
aren't repeating ourselves).  Now, this isn't terribly efficient for the
purposes of compilation, but it does allow the scripts to see what tests
can be left out for the purposes of expediting the build.  It also saves
us from any "**/*.cs" problems that may arise.  If an assembly's NUnit
results file is older than any of its sources, or any of its
dependencies' sources, we re-run the test.  Otherwise, we recycle the
test results into the new report.  We do want all assemblies' results
present in a single report, so we include these out-of-date results, but
every test is clearly timestamped so a reviewer can tell whether the
latest build reran any particular test.

Now obviously this sort of incremental build/test process only works in
the presence of persistent working copy.  Hence the hacked Draco running
on our build server.  It's admittedly a stopgap solution, so I merely
hardwired the output directory in BuildRunner.GetSource(), and modified
BuildRunner.BuildModule() not to remove the directory after it finishes.

What I'd like to see (and had intended to implement Real Soon Now), is a
configuration option that looks just like the one Mark proposed above,
although I don't know if I see it as being an svn-only option.  It seems
to me like it would apply to any SCC system, with the possible exception
of VSS.

Anyway, the persistent working copy has an additional advantage for us.
We're using a couple of custom NAnt tasks, which of course need to be
installed alongside NAnt's program files.  We have the source for these
tasks in SVN, and we have our build scripts in SVN, so we also have NAnt
itself in SVN (just the binaries).  This way, if I update one of our
tasks on my development box, I just build it, stick it in the NAnt
binary folder (the one in my working copy), and commit.  Now when the
build server checks out the latest changes, it gets the updated task.
It'll run it, too, provided its path can somehow point to that version
of NAnt, which it can easily do if the working directory is defined
ahead of time.  This saves us from having to deploy our build
environment (Yep, we've got NUnit and NDoc in there alongside NAnt...we
re-link its tasks against the latest versions).  The only thing anybody
needs in order to build (including the build server) is SVN access and
the framework SDK.  It's entirely self-contained, and we like that.


*Kudos to all the Chive people out there (Mark, Graeme, any others).
It's very clean.

Regards,
Liam Davis-Mead

P.S.

Mark Griffiths wrote:
> Note however, that deficiencies in Draco might well force someone to
have
> the build tool also deal with the SCC.  For instance Draco does not
allow
> SCC labels/tags to be dropped or for version numbers to be stamped in
> AssemblyInfo.* files.

Yes, we're currently doing that by having NAnt <exec> to the svn client
in order to do tagging.  I can't really think of a better way to do
this, though.  I'm not convinced it really belongs in Draco, so I think
we're resigned to doing it directly.


-----Original Message-----
From: Mark Griffiths [mailto:[EMAIL PROTECTED] 
Sent: Thursday, December 11, 2003 10:44 AM
To: [EMAIL PROTECTED]
Subject: RE: [Draconet-users] RE: Having a Specific Working Copy
Directory... instead of check i ng out to a different place each time?


-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id78&alloc_id371&op=click
_______________________________________________
Draconet-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/draconet-users

Reply via email to