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)
- Bereitstellung auf internes Testsystem --> Beta-Version
- Veröffentlichung
einer Vorabversion --> ReleaseCandidate
- 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.