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