If you want to set up Teamcity with Delphi you have to take care of several important issues :

You can run a build with the msbuild-runner, but the Delphi commandline-compiler needs additional Environment Variables :

  1. APPDATA : this is where EnvOptions.proj is saved, without it Delphi cannot compile anything, the Problem is that this is installed under the Config-Dir of the User who installed Delphi
    Values can be :
    German Win2003 – D2007 : C:\Dokumente und Einstellungen\<USER>\Anwendungsdaten\Borland\BDS\5.0
    English Windows7 -D2010: C:\Users\<USER>\AppData\Roaming\CodeGear\BDS\7.0
    etc.
  2. BDS – where Delphi is stored e.g. (for Delphi 2007)  C:\Programme\CodeGear\RAD Studio\5.0
  3. BDSCOMMONDIR – e.g. (for Delphi 2007) C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\5.0

In Build file path you just need to add the <Project>.dproj File and your done if you just want to build the executable.

This alone already helped us to ensure that we always have at least all the source-files which are needed to compile the project, which wasn’t always the case before.

If you want Teamcity to also to run your Unit-tests then you have some extra work to do :

  1. Create a new Teamcity project with all the configuration from above e.g. <Project>-Test
    1. Then you need my adapted Console-Runner for DUnit, which emits the necessary infos for Teamcity.
      Use this instead of the standard console-Runner from DUnit
      e.g. change the Source of your Test-Exe Project to

      Application.Initialize;
      if IsConsole then
       TeamCityTestRunner.RunRegisteredTests
       else
       GUITestRunner.RunRegisteredTests;
  2. Create a batch-file which calls the compiled Unit-test Exe and call it with Teamcity

and there you have it – a working integration of Delphi,  DUnit  and TeamCity.

Now if i only had a sure-fire way how to make all of the old GUI-centered Code testable so that i could switch to some Agile Practice like TDD …

TeamCityTestRunner

Share and Enjoy:
  • Technorati
  • Digg
  • Facebook
  • del.icio.us
  • Live
  • Google Bookmarks
  • DotNetKicks
  • DZone
  • TwitThis
  • Blogosphere News
  • Blogplay
  • LinkedIn
  • MisterWong
  • MisterWong.DE
  • MSN Reporter
  • MyShare
  • RSS
  • StumbleUpon
  • Suggest to Techmeme via Twitter
  • Tumblr
  • Twitter
  • Webnews.de
  • Yahoo! Bookmarks
  • Yigg

4 Responses to “How to set up a Continuous Integration Server with Delphi, dUnit and Teamcity”

  1. Great article, thank you very much!

  2. Great site. A lot of useful information here. I’m sending it to some friends!

  3. Nofate sagt:

    Thank you. Very useful article. And we atre trying to workout some way to test old GUI-oriented code too )

  4. Very nice post. I just stumbled upon your weblog and wanted to say that I have really enjoyed surfing around your blog posts. After all I’ll be subscribing to your rss feed and I hope you write again soon!

Leave a Reply