und ein Traumpaar für Pre-Tested Commit Orientation in Objects GmbH Weinheimer Str. 68 6809 Mannheim Steffen Schäfer Steffen Schluff Version:.0 www.oio.de info@oio.de Gliederung Pre-tested commit und Pre-tested commit mit und
Splendid isolation () Klassischer Wunsch: Isolation größerer Entwicklungsaufgaben mit Gewährleistung einer sauberen Hauptentwicklungslinie The key which opens real [ ] parallel development are branches. Branch ist ein sich abspaltender neuer Entwicklungszweig Verteilte Versionsierungstools (DVCS) erleichtern Branches deutlich Branches sind Grundlage der meisten DVCS Workflows Splendid isolation () Branch A Hauptlinie (Head) Branch B 4
Here be dragons () Branch A Big Scary Merge Hauptlinie (Head) Branch B 5 Here be dragons () Merge ist das erneute Zusammenführen von Branches Branches können sich textuell und semantisch unterscheiden It s [ ] particularly semantic conflicts that make big merges scary. Stabilität der Hauptentwicklungslinie darf nicht leiden 6
Are you the Key? () Branch A Gatekeeper Hauptlinie (Head) Gatekeeper Branch B 7 Are you the Key? () Gatekeeper garantiert Stabilität des Heads Bezeichnung kann variieren (z.b. Integrator) Besitzt als einziger Schreibrechte in der Hauptentwicklungslinie Gatekeeper kann Mensch oder Maschine sein Oder beides: Mensch prüft erst nach Maschine Auch mehrere Menschen möglich: Peer Code Review einer Gruppe Wunsch Saubere Hauptentwicklungslinie ist nicht DVCS spezifisch Änderungen vor Commit als persönlichen Gateway prüfen In diversen CI Servern bereits verfügbar ( pre-tested commit ) 8 4
Pre-tested commit Alice Gateway server 4 VCS Benutzer schickt Änderungen zum Testen an Gateway Gateway testet VCS Stand mit Änderungen Gateway sendet Testergebnis an Benutzer Commit der Änderungen durch Benutzer wenn Testergebnis OK 9 Gliederung Pre-tested commit und Pre-tested commit mit und 0 5
Been there, done that Tool Results CI Server Update VCS Publish Commit CI Server Result Page Inform Developer Team, at your service CI-Server Open Source Durch Plugins erweiterbar Vielzahl vorhandener Plugins Quelle: http://jenkins-ci.org 6
Code Review Werkzeug für Git Entstand im Kontext des Android Projektes Wurzeln liegen in Rietveld (SVN Code Reviews) Review der Änderungen vor Integration in den Entwicklungszweig Stärke gegenüber anderen Tools Fungiert selbst als Git Server Transparent für den Client Bekanntes Client Tooling nutzbar Rechtekonzept(!) Client Git-Repo - Workflow 4 7
- Workflow change 5 - Workflow change 6 8
- Workflow change 7 Trigger Plugin Beinhaltet spezifische Erweiterungen für Neuer Trigger für Erlaubt das Anstoßen von s bei Erzeugung von s Erweitert Konfiguration für Git Repo Zugriff Ermöglicht einen auf Basis von s Gibt nach dem Feedback zum Change Summe: Jobs zum Bauen von Changes nun möglich 8 9
+ - Workflow 9 + - Workflow change 0 0
+ - Workflow change Trigger + - Workflow change Trigger
+ - Workflow change Trigger 4 + - Workflow 5 change Trigger 4 4
+ - Workflow 5 change 6 branch build Trigger 4 5 Demonstration Erzeugung von Changes über Trigger Integration von Changes in den Entwicklungszweig 6
Gliederung Pre-tested commit und Pre-tested commit mit und 7 Wo ist jetzt der Pre-Tested commit? 5 change 6 branch build Trigger 4 8 4
Pre-tested commit mit und 5 change 6 branch build Trigger 9 Pre-tested commit mit und 5 change 6 +4 branch build Trigger Neuer -Schritt 0 5
Give me the grizzly details Weiterer Schritt Typ: Shell ssh -p 948 <GERRIT_USER>@<HOST> gerrit approve --verified + - -code-review + --project <PROJECT_NAME> --submit $GERRIT_PATCHSET_REVISION Pre-tested commit - Wer macht das noch? IntelliJ + Teamcity Vorreiter in diesem Bereich Tool-abhängiger Ansatz Abschließende Integration in das Repository erfolgt durch die IDE http://www.jetbrains.com/teamcity/features/delayed_commit.html Bamboo 4.0 Gatekeeper für Feature Branches (Teil von Automatic Branch Merging) http://www.atlassian.com/software/bamboo/overview/dvcs Hudson / Konzept im Wiki https://wiki.jenkins-ci.org/display/jenkins/designing+pre-tested+commit 6
Fazit Realisierung von Pre-tested commits leicht möglich Rein Server-seitiger Workflow, keine Bindung an spezielle Clients Pre-tested commits für alle sichtbar Und leicht lokal reproduzierbar (cherry-pick) Toolstack ist Open Source Free speech and free beer Pretested commit auf Basis von Somit Code Review auf Wunsch nutzbar Mehr von OIO zum Thema Schulung: Versionsverwaltung mit Git http://www.oio.de/git-schulung-versionsverwaltung-seminar-dvcs-training.htm Schulung: Hudson Grundlagen http://www.oio.de/schulung-hudson-seminar-continuous-integration-trainingjenkins.htm/ JAX 0 - -Management mit marktüblichen Tools http://www.oio.de/m/konf/jax0/-management_mit_marktueblichen_toolsjax0.pdf Zeitschriften-Artikel: Optimiertes Testen http://www.oio.de/public/softwaretest/optimiertes-testen-gateways-gatekeeperkey_js_0_.pdf JAX-Vortrag: Brauch ich ein DVCS? http://www.oio.de/m/konf/jax00/verteilt-versionsverwaltung-svn-branchesjax00.pdf 4 7
Ihr Sprecher Steffen Schäfer Trainer, Berater, Schwerpunkte Web und Rich Client Entwicklung JIRA Plugin Entwicklung Tool Integration 5 Ihr Sprecher Steffen Schluff Trainer, Berater, Schwerpunkte Open Source Tooling Management Clean Code 6 8
?? Fragen??? Orientation Objects GmbH Weinheimer Str. 68 6809 Mannheim www.oio.de info@oio.de?? 7 Vielen Dank für ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str. 68 6809 Mannheim www.oio.de info@oio.de 9