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 :
- 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. - BDS – where Delphi is stored e.g. (for Delphi 2007) C:\Programme\CodeGear\RAD Studio\5.0
- 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 :
- Create a new Teamcity project with all the configuration from above e.g. <Project>-Test
- 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 toApplication.Initialize;
if IsConsole then
TeamCityTestRunner.RunRegisteredTests
else
GUITestRunner.RunRegisteredTests;
- Then you need my adapted Console-Runner for DUnit, which emits the necessary infos for Teamcity.
- 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 …
Great article, thank you very much!
Great site. A lot of useful information here. I’m sending it to some friends!
Thank you. Very useful article. And we atre trying to workout some way to test old GUI-oriented code too )
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!