Archiv für die Kategorie ‘TF Build’

Company-Wide Build Processes – A Vision Within Reach

Sonntag, 07. Februar 2010

[Deutsche Version des Artikels]

A significant amount of project effort, especially at customers doing mainly product development, goes into migrating and optimizing build processes. Build processes exhibit 3 important aspects, which due to their criticality and benefits legitimate project costs:

  1. Build processes are implicitly business critical – only a working build process results in deliverable products.
  2. Heterogeneous build processes imply high – mostly hidden maintenance efforts without directly visible benefits. Small changes in “the scripts” are long lasting and expensive tasks which can be done by high qualified resources only.
  3. Build processes often require manual steps, which can be automated with modern platform. Which saves costs!

This article introduces the new free AIT Build Suite 2010. With which complex build processes can be configured easily using centralized builds with Microsoft Visual Studio Team Foundation Server 2010.

(more…)

Unternehmensweite Buildprozesse – eine Vision rückt in greifbare Nähe

Freitag, 05. Februar 2010

[English version of this article]

In unseren Projekten, vor allem bei Kunden mit Schwerpunkt auf Produktentwicklungen ist ein wesentlicher Teil der Arbeit die Migration und Optimierung von Buildprozessen. Buildprozesse besitzen 3 wesentlich Eigenschaften, die aufgrund des Nutzens die anfallenden Kosten rechtfertigen:

  1. Buildprozesse sind implizit geschäftskritische Prozesse – nur ein                   funktionierender Build resultiert in einem auslieferbaren Produkt.
  2. Stark heterogene Buildprozesse erforden einen hohen – meist versteckten Wartungsaufwand ohne direkten Nutzen. Kleine Änderungen an “den Skripten” dauern lange und involvieren zu viele qualifizierte Ressourcen.
  3. Buildprozesse erfordern häufig manuelle Schritte, die sich aber mit modernen Tools automatisieren lassen. Das spart Kosten!

Dieser Beitrag stellt die neue, kostenlose Build Suite 2010 der AIT vor. Damit lassen sich komplexe Buildprozesse auf Basis des Microsoft Visual Studio Team Foundation Server 2010 einfach und parametrisierbar umsetzen.

(more…)

Projekteigenschaften von Visual C++ Projekten mit Property Sheets konsolidieren

Donnerstag, 28. Januar 2010

Bei der Pflege von C++ Solutions fällt ein größerer Anteil der Aufwände auf die Projekteigenschaften wie z.B. die Liste Include-Pfade. Nicht selten kommt es bei “gewachsenen” Solutions zu umfangreichen Listen von “..\..\..\include” Verzeichnissen:

image

Wenn dies in mehreren 100 Projekten geändert werden muss, ist das nicht mehr benutzerfreundlich. Abhilfe schaffen gemeinsame Property Sheets, die sogenannten .props-Dateien…

(more…)

Neue Version des AIT Build Packages

Mittwoch, 07. Oktober 2009

Das AIT Build Package besteht aus einer Reihe von Erweiterungen für das Build System des Team Foundation Servers. Diese erleichtern die Tasks, die mit dem Build Package ausgeliefert werden, viele Standardabläufe, die bei vielen Kunden benötigt werden. Bei der aktuellen Erweiterung des Build Package sind die nachfolgenden Erweiterungen hinzugekommen:

(more…)

Testausführung nach Maß

Montag, 19. Januar 2009

Die Ausführung von Unit Tests im Buildprozess kann komfortabel über Testlisten verwaltet werden. In manchen Fällen ist das aber nicht anwendbar, z.B. wenn zu viele Solutions gebaut werden und die Tests in Form von Test-Assemblies vorliegen. Hierbei sollen alle Tests ausgeführt werden, die im Source Ordner eines Projektes stecken. Gleichzeitig sollen Code Coverage Werte ermittelt werden.

Dabei treten folgende Fragestellungen auf:

  1. Wie führe ich MSTest in einem lokalen Build aus?
  2. Wie ermittle ich alle Test Assemblies?
  3. Wie aktiviere ich Code Coverage?

Dieser Beitrag soll die Antworten aufzeigen.

(more…)

Quo vadis Team Builds?

Donnerstag, 20. November 2008

Die zentralen Builds im Team Foundation Server legen ihr Ergebnis in Form der Binaries, Log-Dateien und Ähnlichem in einer dedizierten Freigabe ab. Welche Freigabe im Netzwerk verwendet werden soll, lässt sich selbstredend konfigurieren. Allerdings ist das mit Einschränkungen verbunden. Wie man diese Einschränkungen überwinden kann, soll dieser Artikel zeigen.

(more…)

Webcast zum Thema Releasemanagement mit dem VSTS

Donnerstag, 13. November 2008

Auf der MSDN ist ein neuer Webcast von uns verfügbar - zum Thema Releasemanagement mit dem VSTS. Die Details werden zum Nachlesen hier noch einmal näher beschrieben.

(more…)

Team Foundation Build 2008 - Leere Properties in BeforeCompileSolution und AfterCompileSolution

Sonntag, 26. Oktober 2008

Wer bereits die Targets BeforeCompileSolution und AfterCompileSolution verwendet hat, um eigene Aktionen während eines Buildprozesses im TFS auszuführen, wird das Problem kennen. Eigene Properties besitzen keine Werte mehr, sie schein nicht definiert zu sein. Und tatsächlich ist das auch das Problem. Aus Gründen der Rückwärtskompatibilität wird zwischen den Targets BeforeCompile und AfterCompile das Target CallCompile aufgerufen. Dieses nutzt den MSBuild-Task, um CoreCompile aufzurufen, welches letztendlich die SolutionsToBuild kompiliert. Hier ein Code-Ausschnitt aus der Datei Microsoft.TeamFoundation.Build.targets:

<Target Name=”CallCompile” DependsOnTargets=”$(CoreCompileDependsOn)”>
<!– Backwards Compatibility –>
[...]

  <!– Pass in all properties that users might want during the course of the compile targets. –>
<MSBuild Projects=”$(MSBuildProjectFile)”
Properties=”BuildAgentName=$(BuildAgentName);BuildAgentUri=$(BuildAgentUri);BuildDefinitionName=$(BuildDefinitionName);BuildDefinitionUri=$(BuildDefinitionUri);
BuildDirectory=$(BuildDirectory);BuildNumber=$(BuildNumber);CompilationStatus=$(CompilationStatus);CompilationSuccess=$(CompilationSuccess);
[...]
SolutionRoot=$(SolutionRoot);BinariesRoot=$(BinariesRoot);TestResultsRoot=$(TestResultsRoot);
$(CustomPropertiesForBuild)
Targets=”CoreCompile”>
<Output TaskParameter=”TargetOutputs” ItemName=”CompilationOutputs” />
</MSBuild>

  <OnError ExecuteTargets=”SetBuildBreakProperties;OnBuildBreak;” />

</Target>

Der durch Team Foundation Build vorgegebene Buildablauf gestaltet sich wie folgt (Einstiegspunkt ist das Target Compile):

image

Es fällt ein Property namens CustomPropertiesForBuild auf. Tatsächlich dient es dazu, eigene Properties in den Build (Target Compile) “einzuschleusen”. Dazu definiert man spätestens im Target BeforeCompile folgende PropertyGroup:

<PropertyGroup>
<CustomPropertiesForBuild>
MyCustomProperty1=Value1;
MyCustomProperty2=ValueFirstPart%3BValueSecondPart;
</CustomPropertiesForBuild>
</PropertyGroup>

MyCustomProperty2 enthält im Wert ein Semikolon. Dieses würde aber beim Aufruf von MSBuild als Trennungszeichen für das nächste Property interpretiert werden. Daher müssen Semikolons, die im Property enthalten sein sollen (z.B. bei Datenbank-Connection-Strings) mit %3B escaped werden (Kommandozeilen-Escape).

Mit diesen Properties kann man dann in den Targets BeforeCompileSolution und AfterCompileSolution arbeiten…

Einbindung verschiedener Testplattformen

Montag, 29. September 2008

Viele Kunden, die aus stark diversifizierten Entwicklungsumgebungen zum Visual Studio Team System migrieren, stehen vor der Herausforderung, auch ihre gesamte Testplattform entweder zu integrieren oder neu aufzubauen. Der Neuaufbau fällt schwer, wenn sehr viele Tests auf Basis von Legacy-Code existieren. Wenn bereits die vollständige Migration des Legacy-Codes nicht in Betracht kommt, so werden auch die Tests nicht ohne Aufwand und weitere Risiken zu migrieren sein. Dennoch liegt der Nutzen einer solchen Migration z.B. von NUnit-Tests nach MSTest auf der Hand. Können die Testergebnisse von MSTest doch komfortabel mit Visual Studio ausgewertet werden.

unittests01.png

Zudem lassen sich die Testergebnisse in Form von .trx-Dateien direkt an den TFS publizieren. So erhält man ein vollständiges Reporting über die gelaufenen Tests. Zum Beispiel im Quality-Indicators-Report:

unittests02.png

Für die einfache Integration von NUnit-Tests haben wir ein Tool namens Unit Test Result Converter geschrieben, welches Ergebnisdateien aus den verschiedenen Legacy-Testplattformen nach MSTest konvertiert.

(more…)

Software vermessen - automatisiert mit dem VSTS

Sonntag, 25. Mai 2008

Ziel eines Pilotprojektes bei der AIT AG rund um den TFS war die automatisierte Erfassung reproduzierbarer Kennzahlen für das Software-Management. Dabei wurde ein Messprozess auf Basis der Anforderungen von CMMI v1.2 und ISO/IEC 15939 erarbeitet und mit dem Visual Studio Team System umgesetzt werden. Desweiteren entstand ein Framework zur einfacheren Integration von Drittherstellerwerkzeugen in das Visual Studio Team System. Im Rahmen eines ersten Pilotprojektes wurden für das Management wesentliche Softwaremaße ermittelt und ausgewertet. Die Ergebnisse sollen in naher Zukunft auf ein laufendes Software-Entwicklungsprojekt übertragen und ausgereift werden. Während in einem Artikel Anfang des Jahres die ersten Ansätze veröffentlicht wurden, sollen im folgenden die Ergebnisse des Pilotprojektes kurz umrissen werden.

(more…)