2010-02-22 3 views
21

Ich bin auf der Suche nach einem kontinuierlichen Unit-Test-Running-System, etwas, das ich "smokestest" oder "tinderbox" genannt habe (ein Build-Server, der Versionskontroll-Checkouts und vollständige System-Builds von allem in einer bestimmten Quelle löscht) Repository oder Projekt) und etwas wie "kontinuierliche Integration" für kleine Teams mit Delphi.Delphi Build Automation und Continuous Integration möglich mit MS Build nur?

Ich verabscheue mich zu einem kommerziellen "Build Server" -Produkt und hoffe, dass ich eine Menge davon nur mit MS-Build-Unterstützung tun kann, die in Delphi eingebaut ist.

Ich bin auf der Suche nach Ressourcen, Ideen und einem Ort, um loszulegen. Ich weiß nicht, wie man MS Build für diesen Zweck verwendet. Steve Trevethen hat einen Blogbeitrag, der zu einer kleinen Diskussion über die alte dcc32-Befehlszeilenerstellung führt, und einige Kommentare erwähnen ms-build, das seit Delphi 2007 hier ist. Ich benutze Delphi 2010. Ich suche nach Anleitung und Einblicken und Erfahrungen , das wird mir sagen, ist dies ein vernünftiger Weg, um hinunterzugehen, und wenn nicht, wie soll ich stattdessen gehen?

Ich habe festgestellt, dass Sie die Unit (DCU) und EXE-Ausgabeverzeichnis von der Msbuild-Befehlszeile mit/p: DCU_DcuOutput = überschreiben können. Beachten Sie, dass ich mir die XML-Daten in meinen DPROJ-Dateien angeschaut habe, um herauszufinden, wie man diese Dinge überschreibt.

Es wird jedoch nur eine Marke, nicht zu bauen, und/t: Wiederaufbau funktioniert nicht (edit:.. Ja, es funktioniert, es funktioniert auf DPROJ Dateien, aber nicht auf GroupProjects)

Ich wünsche gab es mehr MSBuild-mit-Delphi-Dokumentation da draußen? Die MS-Build-Hilfe in der Produktdokumentation "Rad Studio 2010" zeigt ein oder zwei Dinge über MS-Build, ist aber wirklich skizzenhaft und unvollständig.

Verwandte Fragen:

MSBuild command lines

+0

Offtopic, aber wir verwenden Cygwin Makefiles und dcc32 für solche Sachen. Der Grund ist, dass die meisten unserer Projekte Wurzeln in der Delphi 5 und früheren Welt haben, also bleiben wir bei dem was wir wissen ... aber es funktioniert gut und ist kostenlos. –

+0

'/ t: rebuild' erstellt einen vollständigen Build für mich, mit Delphi 2009 auf dproj-Dateien, haben Sie versucht, msbuild auf dem dproj statt der grouppproj auszuführen? http://stackoverflow.com/questions/1773546/how-can-i-get-msbuild-to-doa-a-full-build-of-a-delphi-project-equivalent-to-dcc32/1774169#1774169 – jasonpenny

+0

Probieren Sie mingw's Tools aus, es erspart Ihnen eine Menge Pfadprobleme im Vergleich zu cygwin/msys. Leider scheint mingw aufgehört zu haben. Coreutils builds –

Antwort

15

Delphi 2010 verwendet MSBuild wie es Motorhaupt bauen ist. Das bedeutet, dass die IDE und die Befehlszeile genau dasselbe tun. Es bedeutet auch, dass Sie vorhandene Projekte problemlos mit der Befehlszeile erstellen können. Tatsächlich machen wir im Delphi-Team genau das ganze Mal. Sie müssen sich keine Gedanken über Schalter für den Compiler selbst machen - die von der IDE erstellte DProj-Datei wird

Im Startmenü befindet sich eine Befehlszeile für die Verwendung von MSBuild mit einem vorhandenen Delphi-Projekt. Er legt die Umwelt richtig so, dass man einfach anrufen:

msbuild myproject.dproj

Sie auch spezifische Build-Konfigurationen von der Befehlszeile, mit der IDE leicht aufrufen können erstellen die Konfigurationen über Kommandozeilenparameter für MSBuild.

Wenn Sie die Umgebung selbst erstellen möchten, können Sie die Batch-Datei rsvars.bat ausführen, um die Dinge einzurichten. Diese Datei befindet sich in Ihrem \ bin-Verzeichnis und sollte über eine Standardbefehlszeile verfügbar sein.

Die Datei enthält folgende Komponenten:

@SET BDS=<your BDS directory> 
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0 
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727 
@SET FrameworkVersion=v2.0.50727 
@SET FrameworkSDKDir= 
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH% 
@SET LANGDIR=EN 

So, wenn Sie Ihre eigene kontinuierliche Integration Build erstellen, geben Sie einfach Ihren Build MSBuild mit Delphi verwalten können.

+1

So weit so gut, aber irgendwo ist es dokumentiert, dass ich/t: rebuild verwenden sollte, um einen Build statt einer Neukompilierung zu erstellen. Irgendeine Idee, was die Flagge ist, um einen Build anstelle einer Abhängigkeitsüberprüfung zu zwingen (alias, Marke)? –

+0

Sieht aus wie/t: Neuerstellung funktioniert, aber nur mit .dproj an Msbuild übergeben, nicht an Projektgruppen. Was ist in Ordnung. Nur ein bisschen mehr Schneiden und Einfügen für mich. –

+0

Lars hat bemerkt, dass/t: Build für .GroupProj funktioniert, während es/t: Rebuild für .dproj-Dateien ist. Exzentrisch, aber praktikabel. –

11

Die Dateien dproj und grouppproj sind Msbuild-Dateien, in die Sie hineinschauen können. Die anderen Teile der Informationen finden Sie im Msbuild-Installationspfad (C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727).Dort finden Sie mehrere Borland. *. Zieldateien.

Innerhalb der Msbuild-Skripts können Sie die verschiedenen Ziele sehen, die mit benannt werden. Zum Beispiel enthält die Gruppendatei Make-, Clean- und Build-Ziele, die Sie mit dem Parameter/t angeben können. Das gleiche gilt für die dproj-Dateien. dproj-Dateien haben auch ein ReBuild-Ziel. Es macht einen Clean und dann einen Build. Wenn Sie den gleichen Effekt für die Gruppendatei haben möchten, können Sie zwei Ziele angeben:/t: Clean; Build

Sie finden auch viele Parameter, die Sie mit/p einstellen können. Wie zum Beispiel Configuration, um die Konfiguration anzugeben, oder DCC_Quiet, um dcc32 anzuweisen, die Ausgabe von nutzlosen Whitespaces zu stoppen.

So ein Build mit Release-Konfiguration von der Befehlszeile das tut, ist dieser Befehl:

msbuild mygroup.groupproj /p:Configuration=Release /t:Build 

Haftungsausschluss: Ich habe in Delphi 2007 der msbuild Dateien gesucht. Spätere Delphi-Versionen haben möglicherweise den Namen der Ziele oder Parameter geändert. Schauen Sie einfach in die Msbuild-Skripte, um herauszufinden, welches das ist.

+1

Es ist sehr hilfreich zu wissen, dass Sie tun/t: Build on a grouppproj –

+0

@ldsandon: ja, RAD und Dokumentation gehen nicht gut zusammen ... – mjn

+1

@ldsandon: Microsoft ist verantwortlich für die Dokumentation von MSBuild; Schließlich ist es ihr Produkt. Vielleicht sollten Sie ihre Website überprüfen - [MSDN] (http://msdn.microsoft.com) für die [MSBuild-Referenz] (http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx)? –

4

Ich bin mir nicht sicher, ob das ist, was Sie brauchen, aber ich habe CruiseControl.NET Setup für kontinuierliche Integration - und DUnit Tests - für Delphi 2009. CCNET hat eine bestimmte Reihe von Aufgaben für MSBuild und andere als einige Setup Probleme, es funktioniert perfekt für mich.

Ich kann Sie wissen lassen, was ich zu tun hatte, das funktioniert, wenn Sie brauchen.

Mark

+0

Haben Sie auch TeamCity ausprobiert? Es hat eine kostenlose 'Professional' Lizenz. – mjn

+0

Ich interessiere mich für CruiseControl.NET. Bitte posten Sie einen Link zu den "Delphi with CruiseControl.NET" Informationen, die Sie haben. –

+0

Sie könnten auf meinem Blog schauen, ich denke, da ist etwas. Wenn nicht, kann ich sicherlich etwas hinzufügen, da ich gerade auf die neueste Version aktualisiert habe. – Mmarquee

Verwandte Themen