Donnerstag, 7. Mai 2020

Team Foundation Server 2017 wird zu Azure DevOps 2019


Im Laufe der letzten Woche wurde unser Team Foundation Server 2017 auf die aktuelle Version aktualisiert. Die neue Software hat neben einem aufpolierten Web-FrontEnd auch einen neuen Produktnamen von Microsoft spendiert bekommen. Der neue Name lautet Azure DevOps Server 2019.

Dashboard eines unserer aktiven Projekte



"Nicht nur ein Quellcodeserver"


Wie der Name schon verdeutlicht, steckt hinter diesem Tool nicht nur ein Quellcodeserver. Viel mehr wird versucht, das komplette Spektrum der professionellen Softwareentwicklung zu unterstützen und die Qualität des Endproduktes zu erhöhen. Folgende Punkte stechen hierbei besonders hervor:

  • Dokumentation (In Form eines Wiki)
  • Quellcodeverwaltung (TFVC sowie Git)
  • Ticketsystem (Besondere Ausrichtung auf SCRUM)
  • Verwaltung von Produktversionen
  • Automatisierte Versionserstellung
  • Automatisiertes Testen
  • Automatisierte Auslieferungen

Einbindung von automatischen Prozessen im DevOps-Server


Da Softwareentwicklung durchaus diffizil sein kann, ist es wünschenswert wiederkehrende Arbeitsschritte - wie etwa die Versionserstellung oder eine Auslieferung auf einen Webserver - zu automatisieren. Durch eine Automatisierung erreicht man neben dem Zeitgewinn auch die Tatsache, dass sich andere Kollegen nicht in einen spezifischen (manuellen) Prozess einarbeiten müssen.

Die o.g. letzten drei Punkte werden hierbei im DevOps Server als 'Pipeline' deklariert.

Automatisiertes Versionserstellung


Der Azure DevOps Server 2019 ermöglicht mittels 'Continuous Integration' die vereinfachte, ständige
Versionserstellung. So kann bei jeder Codeänderung automatisch eine neue Version erzeugt und im Fehlerfall schneller diagnostiziert werden, bei welchem Commit sich ein Fehler eingeschlichen hat.

Automatisiertes Testen


Um die Qualität des Endproduktes zu erhöhen, ist es unabdingbar diverse Tests durchzuführen. Da der
Testaufwand durchaus pro Produktversion mehrere Stunden (wenn nicht Tage) einnehmen kann, ist es
empfehlenswert diesen Aufwand (teilweise) auszulagern.

Ein typischer Anwendungsfall von automatischen Tests wäre z.B. die Erstellung von Reports im Endprodukt. Hierbei kann geprüft werden, ob z.B. Ausdrucke auch weiterhin als .PDF-, als .CSV- und als HTML-Report exportiert werden können.

Allgemein kann folgendes behaupten werden: Je mehr automatische Tests vorhanden sind, desto stabiler und hochwertiger ist das Endprodukt.

Zwar können automatische Tests manuelle Tests nicht gänzlich ablösen, jedoch ist es mit diesen wahrscheinlicher eine gleichbleibend gute Qualität zu gewährleisten.

Automatisierte Auslieferungen


Eine Software durchläuft nach der Versionserstellung mehrere Testläufe bevor ein offizieller Release durchgeführt werden kann: (Folgendes dient nur als Beispiel)

  1. Bereitstellung auf internes Testsystem --> Beta-Version
  2. Veröffentlichung einer Vorabversion --> ReleaseCandidate
  3. Veröffentlichung einer Endversion --> Release

Da diese Testläufe während des Lebenszyklus wiederkehren und mit unterschiedlichen Konfigurationen und auch auf unterschiedlichen Testsystemen durchgeführt werden, ist es ratsam, das Deployment auf diesen Systemen zu automatisieren. So kann z.B. eine Beta-Version auf einen Testserver veröffentlicht werden, welcher nur einer bestimmten Audienz zur Verfügung gestellt wird wohingegen das offizielle Release über einen öffentlichen Zugang (z.B. NextCloud-Server) allgemein allen Nutzern veröffentlicht wird.