1 Daily Build Verfahren für erfolgreiche Continuus Projekte Buildprozesse mit Buildprozesse mit Perl Perl
1
Daily Build Verfahren für erfolgreiche Continuus
Projekte
Buildprozesse mit PerlBuildprozesse mit Perl
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 2
InhaltInhalt
Build Prozesse
Daily Build Verfahren für erfolgreiche Continuus Projekte
Generelles Vorgehen zur Einrichtung
Einsatz von Perl
Zusammenfassung
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 3
Ziel dieses VortragesZiel dieses Vortrages
Aufzeigen eines möglichen Lösungsansatzes, für Buildprozesse ohne die Verwendung von Continuus Object Make
Voraussetzung: Für einzelne Komponenten des Software Produktes existiert ein Makeprozessz.B. Über Unix-Make, GNU-Make o.ä.
Die verwendete Programmiersprache spielt dabei keine Rolle.
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 4
Build ProzesseBuild Prozesse
Definition: Build Prozesse sind automatisierte Abläufe, um aus Sourcen ein Software-Produkt zu erstellen.
Es wird zwischen zwei Verfahren unterschieden:
• Mit Continuus Object Make
• Ohne Object Make
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 5
Full/Partial BuildFull/Partial Build
Full BuildDer komplette Buildprozess wird durchlaufen.Jede Source wird neu compiliert, alle Bibliotheken des Produktes neu erstellt und das Produkt neu gelinkt.
Partial Build
Nur Teilprodukte werden neu erstellt.Für eine Fehlerbehebung wird z.B. nur eine Bibliothek neuübersetzt und zum Produkt neu hinzugelinkt.
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 6
Mögliche ProblemeMögliche Probleme
Full Build - Sicherste Methode, ein Produkt zu erstellen!- Zeitfaktor- Im Fehlerfall kein Full Build möglich
Partial Build - notwendig für Fehlerbehebung u. Tests
- Inkonsistenzen und dadurch Produktfehler- Sofern nicht unter Config. Management,
nicht mehr nachvollziehbar
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 7
Umgebung für Build Umgebung für Build ProzesseProzesseDie in diesem Vortrag besprochenen Verfahren
wurden im Client-Server Umfeld erfolgreich getestet.
Betriebssysteme: Unix-Derivate, NT
Vorzugsweise werden Build-Verfahren unter Unix realisiert, da hier über Cronjobs und der Shell-Umgebung einiges automatisiert werden kann.
Bei reinen NT Entwicklungen ist der Einsatz problematischer, aber möglich.
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 8
Daily Build Verfahren für Daily Build Verfahren für erfolgreiche erfolgreiche Continuus ProjekteContinuus Projekte
Daily Build bedeutet ... das Projekt ist täglich in der Lage, das
Produkt komplett neu zu erstellen.... täglich zu wissen, wo das Projekt steht... sich möglichst früh auf den Tag der Auslieferung vorzubereiten.
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 9
Daily Build als Erfolgsfaktor Daily Build als Erfolgsfaktor (1)(1)
Tägliche Prüfung
• der Einstellung der Reconfigure Properties
• der Entwickler-Disziplin
• von Abhängigkeiten
• der Integration der Sourcen (Integrationstest)
• des Projekt-Standes
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 10
Daily Build als Erfolgsfaktor Daily Build als Erfolgsfaktor (2)(2)
Tägliche Bereitstellung
• eines neuen Produktes für Systemtests
• von Informationen – zur Buildfähigkeit des Produktes oder Teilen davon– zu Konflikten aufgrund parallel checkin o.ä.– zu Inkonsistenzen aufgrund fehlerhaft
eingecheckter Sourcen– Problemzonen (bestimmte Bibliotheken o.ä.)
• z.B. Liste behobener Fehler
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 11
Daily Build als Erfolgsfaktor Daily Build als Erfolgsfaktor (3)(3)
Nutzung von Rechenzeit
• bei Build über Nacht (Nightly Build)
• vorteilhaft bei Datenbank-Anwendungen
Sicherheit für den Tag X !!!
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 12
Generelles Vorgehen zur Generelles Vorgehen zur Einrichtung Einrichtung 1. Prüfung des Makeprozesses
2. Automatisierung - Build für das ganze Produkt z.B. mit Perl
3. Verknüpfung des automatischen Build mit Continuus
4. Bereitstellung von Build-Ergebnissen z.B. über Intranet (optional)
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 13
Makeprozess Makeprozess Bsp.: Abhängigkeiten bei einer C
Entwicklung
LocalDev. 1Env.
LocalDev. nEnv.
GlobalDev.Env.
Bei vorhandenen Libs und Headers-> local makeAnsonsten Zugriffauf Globale Umgebung(Lib- u. Headerverzeichn.)
Make
BuildEnv.
Reconfigure
Make
Make
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 14
Automatisierter BuildAutomatisierter Build
Warum Perl?• Einfache und mächtige Scriptsprache.
• Ideal zum Starten von Prozessen und Auswerten von ASCII-Log Files.
• CGI-Scripte
• Verfügbarkeit: NT / Unix
Mögliches Verfahren:Perl-Script, welches einzelne Makeprozesse nacheinander abarbeitetund die Ergebnisse in ein Log-File schreibt.
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 15
Verknüpfung mit Verknüpfung mit ContinuusContinuus
Erstellung einer Ablaufsteuerung, welche folgendes durchführt:
1. Aktualisieren der Sourcen für die Build UmgebungReconfigure und nachfolgender Sync auf einemgetrennten Continuus Build/Prepared Projekt
2. Ausführung des automatisierten Builds
3. Auswerten und Aufbereiten der Daten für das Intranet
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 16
Bereitstellen von Build-Bereitstellen von Build-Ergebnissen Ergebnissen
Mögliche interessante Informationen:
• Welche Bibliotheken wurden nicht gebaut u. warum– Liste Good/Bad Libs
– Liste unsatisfied Symbols (z.B. bei C-Projekten)
• Welche Sourcen/Versionen haben zum Produkt geführt
• Welche Fehler sind im aktuellen Produkt behoben(Unter der Voraussetzung, daß PT eingesetzt wird)
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 17
PWE 1
PWE n ContinuusDB
.
.
.
PWEBuild Mgt.
Exe / Libs
Nightly:
Daily Build im ÜberblickDaily Build im Überblick
• 2. Build
• 1. Reconfigure
• 3. Info Intranet
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 18
Einsatz von PerlEinsatz von Perl
Ich empfehle den Einsatz von Perl, da
• mit geringfügigen Modifikationen auch unter NT lauffähig
• Modularisierbar • (z.B. Module für Continuus Funktionen, Make, Auswertung)
• Große Funktionsvielfalt schon vorhanden
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 19
Was muß bei der Was muß bei der Umsetzung beachtet Umsetzung beachtet werden?werden?
• Möglichst früh Funktionsbibliotheken anlegen
• Sauberer Programmierstil(mit Perl kann so programmiert werden, daß man zwei Tage später den eigenen Code nicht mehr lesen kann!)
• Dokumentation (Kommentare, Beschreibungen)
• Schrittweises Vorgehen(Bottom Up)Zuerst kleine Teilprozesse automatiseren
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 20
Was wird benötigt? (1)Was wird benötigt? (1)
• Scripte nicht nur für den Full Build erstellenFull Build bedeutet „Best Case“
• Automatismen für Partial Builds- Wie kann mitten im Prozess gestartet werden?- Sollen manuelle Eingriffe möglich sein?- Steuerung über Optionen
• Release-Verwaltung - Sichern von Projekten, Folder und Tasks- Releasen von Projekten
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 21
Was wird benötigt? (2)Was wird benötigt? (2)
• Kopieren von Source Bäumen- über Continuus (Reconfigure und Sync Workarea)- ggf. ohne Continuus aus einer Workarea, evtl. einfacher, da immer aus der Build-Umgebung
• Erstellung von Testumgebung - Kopieren der Sourcen, Executables- Debugvorbereitungen
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 22
Was wird benötigt? (3)Was wird benötigt? (3)
• Auswertung der Logfiles– Fehlerhafte Teilprodukte (Übersichten)
– Konkrete Fehlermeldungen der Teilprodukte
– Mögliche Behebungshinweisez.B. Unsatisfied Symbol wird von Bibliothek xyz aufgerufen
• Bereitstellung einer Liste aller Sourcen und zugehöriger Versionen
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 23
Beispiel eines Perl-Beispiel eines Perl-ProgrammesProgrammes• Das folgende Perlprogramm liest ein File und
gibt den Inhalt des Files aus.
• #!/usr/local/bin/perl• #• $file = '/etc/passwd'; # Filename zuweisen• open(INFO, $file); # File öffnen• @lines = <INFO>; # in Array einlesen• close(INFO); # File schliessen• print @lines; # Array ausgeben
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 24
Commandline Interface Commandline Interface und Perl (1)und Perl (1)
• .....
• # Continuus starten• ccm_start();
• ######## Reconfigure ausführen• update_workarea ($proj_name, $rep_file);• ########
• # Continuus stoppen• ccm_stop();
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 25
Commandline Interface Commandline Interface und Perl (2)und Perl (2)
• sub update_workarea • {• my ($PROJ_NAME)=$_;
• print REP_FILE `ccm reconfigure -r -p $PROJ_NAME`;• print "Reconfigure beendet !!!\n";• print REP_FILE `ccm sync -p $PROJ_NAME`;• print "Sync beendet !!!\n";• print " F E R T I G !!!\n";• }
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 26
URLs zu PerlURLs zu Perl
• http://www.perl.org
• http://www.cpan.org
• http://www.perlarchiv.de/perl/index.shtm
• http://perl.miningco.com/compute/perl/
• http://www.ibriker.de
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 27
ZusammenfassungZusammenfassung
• Positive Effekte durch Einsatz von Daily Build Verfahren
• Bessere Produktqualität– Durch tägliche Builds und Tests
• Schnelle Produktzyklen– Da täglich ein neues Produkt vorliegt
• Geringere Kosten– Der Aufwand für die Einrichtung von
Daily Build Prozessen zahlt sich aus!– Schnelle Fehlerbehebung möglich
• Mehr Sicherheit– Fallback-Lösung, z.B. Stand letzter Tag
Build Prozesse mit Perlhttp://www.riecon-it.de
Folie Nr. 28
Vielen Dank
für
Ihre Aufmerksamkeit
Noch Fragen ?