My blog has moved!

Visit http://www.codeprogression.com or http://www.elegantcode.com/about/richard-cirerol and update your bookmarks.

Sunday, April 19, 2009

Implementing TeamCity for .NET Projects, Part 3: Running Tests, Nightly Builds, and Creating Artifacts

For more information on this series, please see the introductory post.  This post also assumes that you have completed parts 1 and 2.

With our basic solution build, we want to start running our unit tests on every check-in, create a nightly build (that runs both unit and integration tests), and generate some artifacts.

Running Tests

First things first, lets get the tests running.  Open the current build configuration and select the build runner navigation link (it should say Runner: sln2008).  On the build runner page, select NUnit 2.4.8 from the NUnit runner combo box.  Add the path to the unit test assembly in the assembly text box.  For our solution, the path is: **/bin/debug/AdventureMVC.Tests.dll .  As you can see, this is using an MSBuild wildcard format to find the correct assembly.  It is unnecessary to point to the full path.

image

Save your changes.

Now, when your builds run, you should get a new status indicator showing how many tests passed. 

image

If you click on the status, you will also see a new tab on the build results page showing the test information.

image image

Nightly Builds (with integration tests)

Now that we have our imageunit tests running on every check-in, let’s create a nightly build.  Open the current build configuration.  Make a copy of the build by clicking on the Copy button on the right-hand side of the page. 

Rename the new configuration as you see fit.  I will use Nightly Build.

image

Select the build runner link.  Add the integration test assembly to the test assembly text box.

image

Save your changes.

Select the Build triggering link.  Deselect the check box.  On the imageSchedule tab, click on Add time trigger and configure your nightly build time. Save your changes.  (You can test the build at this point by clicking on the Run button.)

Creating Artifacts

We want to make the compiled website readily available, so we are going to create some artifacts.  Getting at the precompiled website through the file system is inconvenient.

If the example solution contained a website, compiling the solution would create a precompiled website.  Since the example solution contains a web application project (specifically an ASP.NET MVC application project), I had to add a post-build event to create the precompiled site.  Check the AdventureMVC project properties to see the syntax.

On the Nightly Build configuration page, select the General Settings link.  In the Artifacts text box, type: PrecompiledWeb\Web=>PrecompiledWeb.  Save your changes.

image 

Now when you run your build, you should see an Artifacts dropdown link in the status line of the build. 

image

When you click on the build status, the status page now has an artifacts tab.  

image

Not only do you have the ability to download the individual files, you can now use these artifacts in other build configurations…but that is for another post.


Upcoming posts:

  • Build scripts: We need some additional functionality that the basic solution runner doesn’t provide, such as zipping up artifacts.

  • Setting up notifications: We will look at the different options for notifications, such as email and the tray notifier.

  • Deployment: Using TeamCity and build scripts to update different deployment environments.


    JetBrains TeamCity
    Sample Project on GoogleCode

    4 comments:

    Ryan Anderson said...

    Nicely done!

    netmajor said...

    Great TC series ! ;)

    Richard said...

    Thanks!

    Anonymous said...

    Wicked, thanks Richard - this is very helpful.

    Post a Comment