Alles nur CI-Theater? - Konstantin Diener | cosee GmbH - IT-Tage 2020
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Abrechnungs- modelle Experten-Teams Backlog Software- Discovery- Auslieferung Releases Phase in Sprints
„Continuous Integration is a so ware development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive so ware more rapidly. …“ https://martinfowler.com/articles/continuousIntegration.html ft ft
Every Commit Should Build the Mainline on an Integration Machine
Fix Broken Builds Immediately
Keep the Build Fast
Test in a Clone of the Production Environment
Make it Easy for Anyone to Get the Latest Executable
Everyone can see what's happening
Automate Deployment
CI-Theater
„CI theatre” describes the illusion of practising continuous integration (CI) while not really practising it. Suzie Prince, https://www.gocd.org/2017/05/16/its-not-CI-its-CI-theatre.html
Cargo Cult
Top 3
#3
Make Your Build Self-Testing
„If you've skipped unit tests because you plan to refactor the code soon, you might not understand refactoring (or unit tests).“ @DocOnDev
mvn install -DskipTests
--no-verify
#2
Fix Broken Builds Immediately
„A phrase I remember Kent Beck using was "nobody has a higher priority task than fixing the build". This doesn't mean that everyone on the team has to stop what they are doing in order to fix the build, usually it only needs a couple of people to get things working again. It does mean a conscious prioritization of a build fix as an urgent, high priority task.“ Martin Fowler
#1
Everyone Commits To the Mainline Every Day
Continuous Delivery Jez Humble, David Farley
„… it has been our experience that poor version control practices are one of the most common barriers to fast, low-risk releases.“ Continuous Delivery
• Develop on Mainline • Branch for Release • Branch by Feature • Branch by Team Continuous Delivery
Branch by Feature
„It is worth emphasizing that branching by feature is really the antithesis of continuous integration, … Continuous Delivery
Branching is not the problem, merging is the problem. Jez Humble
Merge Hell
Continuous Isolation
DON’T DO FEATURE BRANCHES!
Develop on Mainline
Trunk Based Development
early integration vs. late integration
• Ensuring that all code is continuously integrated • Ensuring developers pick up each others’ changes immediately • Avoiding „merge hell“ and „integration hell“ at the end of the project Continuous Delivery
Branch by Release
Creating a branch for release replaces the evil practice of the code freeze, in which checking in to version control is entirely switched o for days and sometimes weeks. Continuous Delivery ff
Keeping Your Application Releasable
• Hide new functionality until it is finished. • Make all changes incrementally as a series of small changes, each of which is releasable. • Use branch by abstraction to make large-scale changes to the codebase. • Use components to decouple parts of your application that change at di erent rates. ff
• Dark Releases • Feature Toggles • Build Time Switches
• Hide new functionality until it is finished. • Make all changes incrementally as a series of small changes, each of which is releasable. • Use branch by abstraction to make large-scale changes to the codebase. • Use components to decouple parts of your application that change at di erent rates. ff
• Hide new functionality until it is finished. • Make all changes incrementally as a series of small changes, each of which is releasable. • Use branch by abstraction to make large-scale changes to the codebase. • Use components to decouple parts of your application that change at di erent rates. ff
• Hide new functionality until it is finished. • Make all changes incrementally as a series of small changes, each of which is releasable. • Use branch by abstraction to make large-scale changes to the codebase. • Use components to decouple parts of your application that change at di erent rates. ff
Kolumne DevOps Kolumne: DevOps Stories DevOps Kolumne Kolumne: DevOps Stories DevOps Kolumne Kolumne: von Konstantin Diener DevOps Stories Titelthema Kolumne Technologieentscheidungen an der Basis Kolumne: von Konstantin Diener DevOps Stories Donnerstag, 23:14 Uhr: Im Entwicklerbüro stapeln sich Lukas: „Weglassen können wir die Metadaten nicht. Pizzakartons, die Luft ist schlecht und vom Geruch von Sonst heißen alle Alben auf der Plattform „Untitled“ Kolumne DevOps Club Mate durchsetzt. Der Produktmanager Erik sitzt und die Titel sind einfach durchnummeriert.“ von Konstantin Diener Kolumne: gemeinsam mit den Entwicklern Lukas und Christian Erik: „Und das innovative Bedienkonzept des Kun- vor dem Rechner (Abb. 1). Vor den beiden ziehen lang- den, das auf der Messe präsentiert werden soll, funktio- von Konstantin Diener sam Logausgaben auf einer Konsole vorbei. niert ohne Metadaten natürlich auch nicht, oder?“ Erik: „Lukas, lässt sich hochrechnen, wie lange wir Lukas: „Genau!“ für den Upload aller Musiktitel brauchen, wenn es in dieser Geschwindigkeit weitergeht?“ DevOps Stories Erik: „Aber warum macht ausgerechnet das Laden der Metadaten solche Probleme? Nach meinem Ver- Lukas: „Im Moment brauchen wir für ein Album ständnis ist das Vorbereiten der Audiodateien viel auf- DevOps Kolumne So wird hier gearbeitet! wichtigsten Alben für den ersten Batch haben will, brau- chen wir bei der aktuellen Geschwindigkeit ungefähr ein Kolumne: ungefähr 25 bis 30 Minuten. Da der Kunde die 20 000 wendiger, braucht mehr Rechenleistung etc.“ In der letzten Folge der Kolumne haben Lukas und sei- von Konstantin Diener Das Team hat ein Daily-Stand-up-Meeting eingeführt, DevOps Stories Jahr. Der Prozess wird aber immer langsamer. Es dauert ne Kollegen festgestellt, dass sich für ihre Art der Pro- das jeden Tag um 10 Uhr stattfindet. Bis auf Jörg sind alle duktentwicklung crossfunktionale Teams anbieten. In pünktlich versammelt. Er kommt um 10:10 Uhr durch die Jetzt ziehen wir an einem Strang also eher noch länger.“ Vor etwas über einem Jahr hat ein Kunde Lukas’ Ar- einem solchen Team sind alle Disziplinen vertreten, die Tür geschlendert und hat einen Kaffeebecher in der Hand. Kolumne: beitgeber mit der Entwicklung einer neuen Musikplatt- es für die Herstellung eines Shippable Product Incre- Christian: „Hey Jörg, wie schön, dass du auch schon form mit innovativem Bedienkonzept beauftragt. DirektFolge der Kolumne hatten Lukas ments braucht. Als Konsequenz wurden die Mitglieder da bist. Wir warten schon seit zehn Minuten auf dich, In der ersten und sein points verzögert und der Releasetermin damit gefähr- von Konstantin Diener im Anschluss haben Lukas und seine Teamkollegen mit bei der Auslieferung einer der bestehenden Teams Backend, Frontend und Mobile um mit dem Stand-up zu beginnen.“ Team Probleme Das haben wir entschieden? Musikplatt- det ist.“ DevOps Stories der Entwicklung begonnen. Erik betreutform die Entwick- auf verschiedene neue Produktteams verteilt. Lukas’ Jörg: „Wieso regst du dich so auf, Christian? Wir hat- für einen ihrer Kunden. Mit viel Einsatz haben sie Christian (Backend): „Was? Sorry, Jungs, das meint lung als Product Manager. Am Montag es soll das neue neues Team besteht neben seinem Backend-Kollegen ten uns locker für 10 Uhr verabredet. Sind diese zehn geschafft, die Lösung rechtzeitig für den Messeauftritt ihr aber jetzt nicht ernst, oder? Ihr habt wochenlang ge- Produkt auf einer Messe der Öffentlichkeit Christian noch aus Jörg (mobile Entwicklung) und Juliaseit Minuten jetzt wirklich so wichtig? Meine Bahn hatte Ver- zur vorgestellt Verfügung zu stellen. Der Kunde hat auf der Mes- braucht, um uns zu sagen, Lukas arbeitet welche Daten einigen Monaten ihr braucht. mit seinen Kollegen Julia: „Ich hatte Dienstag Urlaub. Jörg ist zwei Wo- werden. Dazu muss Lukas’ Team noch se 20sehr 000 gutes AlbenFeedback bekommen und möchte (Frontend-Entwicklung) (Abb. 1). in einem spätung und crossfunktionalen bei Starbucks Produktteam. Nachwaranfäng- eine riesige chenSchlange ...“ Entscheidungen wollten wir doch alle weg! Solche zusätz- Jetzt bekommen wir nach acht Wochen das erste Mal über einen Load-Prozess auf der Plattformlich bereitstellen. Julia: „Ich finde schon, dass du pünktlich sein soll- zur bereits existierenden Webversion Apps für iOS Feedback und euch fälltlichen nichtsSchwierigkeiten Besseres ein, alshat das Team die Zusammenar- gemeinsam treffen, gleich oder? Außerdem von Konstantin Diener finde ich es wich- In den letzten Stunden hat sich herausgestellt, dass derentwickeln lassen. Lukas und sein Kollege in der Woche danach beibeit inauf einem test. Wirgeregelt. haben die Zeit nämlich könnenmit dienutzlosem tig, dassRumste- und Android Erik der Teamvertrag Matte zu stehen? Seitdem wir Magnus mit dazunehmen!“ Prozess viel langsamer läuft als geplant. Christian sind für die Umsetzung des Backends zustän- Erik, natürlich gibt es Verzögerungen. Kollegen immerAber hen verbracht. flüssiger Du könntest zusammenarbeiten. Im Team- wenigstens Bescheid sagen, Lukas: „Du hast Recht. Bei einer Entscheidung hät- das Prob- Christian: „Der Ladeprozess für die Metadaten ist wenn es bei dir eng wird!“ dig, Julia kümmert sich mit ihren Kollegen um die Web- lem liegt sicher nicht bei vertrag uns!“ ist unter anderem festgelegt, dass das Team test du dabei sein sollen.“ jetzt vollkommen steckengeblieben. Die Maschinen sindund Abb. wichtige Entscheidungen Jörg: „OK, wenn ihr immer gemeinsam trifft. darauf Wert legt, versuche ich Christian: „Wir wussten ja aber gar nicht, dass wir anwendung Jörg1: und Adrian Das Produkt, an bauen die mobilen dem die beiden Jörg in(Mobile-App): arbeiten, ist gerade einer „Christian, darf ich dich daran unter Volllast.“ Die ersteneine mich des Versionen danachProduktszu richten. von Lukas’Soll Team ich direkt etwas mitentscheiden. meinen Wie hätten wir da wissen sollen, dass Apps. Es gibt erste Anzeichen, Das kann doch nicht jeder anderswir’s machen! äußerst prekärendass Lage sich die Auslieferung erinnern, dass wir direkt zu Beginn Schnittstellen- Erik: „Was bedeutet das?“ Christian: „Das Hochladen eines Albums verzögern wird. Deshalb hat Erik, der Produktmanager, beschreibung bei euch angefragt besteht Meeting einberufen. hatten durchschlagenden Punkten haben? Die habenErfolg. Lukas: fürs Daily Wie halten loslegen?“ mit dem Betrieb? wir Deshalb hat der Kun- Julia und Jörg uns dazu fehlen?“ „Gerne.“ ein gemeinsames nie bekommen und mussten de große uns Pläne selbst für etwasdie nächsten aus den zwölf Monate. Außer- Lukas: „Wieso willst du Magnus dazunehmen, Julia, aus mehreren Aufgaben. Die AudiodateienErik liegen als Porträt Jörg: „Ich habeum gestern versucht, die neuegehört Titelsuche (Produktmanager): „Lukas, Christian, ich habe Fingern saugen!“ dem wurde das Team mitJeden Martin Monat einenstarten weiteren in Lukas’der Firma neue Vor doch gar nicht Kollegen, einigen Monatenzum Team?“ Lukas: haben„Hallo sich dieihr beiden. Wir schlagenGordon: Backend-Entwick- uns gerade „Genau.“ WAV-, OGG- oder MP3-Dateien vor. Wir müssen sie einberufen, Konstantin in die App zu integrieren. Ich habe aber direkt Julia: festge- diesen Termin weil JörgDiener und ist CTO beimir Adrian cosee. Dort hat er Julia selbst die (Web-Frontend): Backend-Entwickler „Wir haben auch dasverstärkt. Gefühl, und beim Ruben unterstütztMittagessen gemeinsamen das „Ja, in der aberverschiedenen ler großen der erKü- hat diemitmeisten TeamsErfahrungen unserer mit Spring-Boot-Konfiguration in einer Community of herum.“Lukas: „Wie deployt ihr denn eure Software?“ in ein einheitliches Format überführen und die Laut- Erfahrung gemacht, wie viel schnellerdass und besser Entscheidun- Team als Scrum stellt, dass Master. Martin der App Build hatesimlangsam rot Stand-up ist. Die ange- Integrationstests NoSQL-Datenbanken – auch was den Betrieb in der sagten, dass sich die Bereitstellung der Service-End- Serviceimplementierungen immer unglaublich lan-wird che eng. Julia hat den letzten Practice Platz an Jerome: „Deswegen organisiert. Denn die Entwickler hatten fest-haben wir Spring Boot rausgewor- Gordon: „Gar nicht. Wir schicken den Kollegen einen stärke und so weiter anpassen. Außerdem haben das gen getroffen werden können, wenn sie schlagen fehl, weil ihr, Lukas und Christian, nicht kom-Außerdem ge nah am Problem brauchen undstatt- dann diekündigt, Servicesdass er passen. nicht heute mit einem wie Prototyp Soeinem der Tische fürergattert. die Mon- Cloud Sie sitzt beiangeht. einer Kollegin, stimmen fen und wir doch bauen unserealleServices Tech- jetzt mit Dropwizard.“ Album und die einzelnen Titel Metadaten, die wir ins finden. Seit ungefähr drei Jahren entscheiden die Entwickler goDB-Persistenz patible Änderungen am Backend-Service gemachtgestellt, habt. dass inimmer allen crossfunktionalen Produktteams Link, unter dem sie das Paket herunterladen können. Sie die Services Daten liefern, können wir siebeginnen im Frontend wird. die sieDaraus entwickelt vorher noch nicht sich gesehennologieentscheidungen hat (Abb. 1). mit ihm Christian: ab.“ Frameworks und Technologien für deployenSpring „Dropwizard? Haben wir nicht Porträt System laden. Mit diesem Schritt haben wir jetzt gerade bei cosee eigenständig über die verwendeten Technologien. einemüssen Diskussion So kann (Abb. 1): ich den Service nicht mehr nutzen undunterschiedliche Martin: muss „Erwir hathaben auf jeden Fallbeidieuns meisten Erfahrun- es dann für uns.“ nicht sinnvoll anzeigen und sie konvertieren.“ Julia: „Hallo, ich heiße Julia. Ich glaube, Build und DeploymentBoot von als Standard? Backend-Services Wieso nehmt ihrChristian: verwen- einfach was „Oh Gott, und wie bekommt ihr mit, ob die größten Probleme.“ Christian: mühsam „MongoDB istnachvollziehen, was sich geändert hat.“ Konstantin Diener ist CTO bei cosee. Dort waren Christian: „Da wir nicht wissen, wie unsdeine ihr die Servi- nochbevorzugte Lösung! gen und kann gar nicht kennengelernt.“ det uns gerne mit Infos anderes?“ versorgen. Ich möchte werden. Die Mitglieder haben bei einem ihrer ersten das Deployment erfolgreich war?“ Wann haben wir denn Lukas: „Ich wusste entschieden, dass gar wirnicht, MongoDBdass du inaberdeinem nicht, Build dass er mitentscheidet.“ die Teams zunächst als funktionale Teams aufge- ces im Weblayer und in den Apps einsetzt, müssen wir Su: „Hallo Julia, ich bin Su. Ich habe letzten Monat Gordon: „Die Kollegen schicken uns eine Mail mit Abb. 1: In einem crossfunktionalen Team sind alle Disziplinen vertre- Integrationstests wollen?“für unsere Services hast. Lukas: Das istTreffen auch direkt auf die Tagesordnung gesetzt, über ja ei- findest stellt, was zu ähnlichen Problemen wie ten, die das Projektimmer bei Lukas ganze Reihefürvon einebraucht oder Produkt die Annahmen Persistenz einsetzen treffen angefangen.“ und „Aber eine mögliche du es nicht schwierig, Vereinheitlichung zu dass kei- Dabei dem Logfile des Servers.“ sprechen. Martin: gentlichDienstag.“ eine tolle Sache. Aber wie sollen ner wir von deiner Mei- und Erik führte. Vor rund zwei Jahren haben er und bekommen immer erst nach zwei „Letzte WochenWoche Feedback. Julia: „Freut mich, dich kennenzulernen, uns Ahnung Su. In von wel- MongoDB hat?“ entwickelt sich eine Diskussion über die verschiedenen Lukas: „Wie oft liefert ihr neue Software in Produkti- www.JAXenter.de seine Kollegen begonnen, konsequent auf crossfunktionale Meist, dass unsere javamagazin Annahmen 5 | 2017 Christian: 35 „Dasnung falsch waren.“ nachnicht war mir vorgehen?“ chem Team klar.bist Ichdu?dachte, Woran Christian: wirarbeitest du?“ „Wir müssen Betriebsmodelle das1): (Abb. Ding dann schließlich on aus, Gordon?“ Produktteams umzusteigen. Porträt Erik: „Wie bekommensprechen wir dieeinfach Kuh denn nurJörg: über „Mir nun vomeinSu: wäre paar„Ich es am liebsten, wenn warten Themen.“ ihr meine arbeite am Frontend von Bookery, und Tests betreiben. der Lars: neuen Gibt es einen Mongo as „Wir haben sehr gute Erfahrungen mit GitLab a Service Gordon: „Maximal einmal alle drei Monate. Das ist Lukas: „Mir in euren Continuous-Integration-Zyklus integriert. So Eis? Was können wir als Nächstes Konstantin Diener ist CTO bei cosee. Nach der tun?“war das auch nicht klar. Ich wusste auch oder eBook-Plattform.“ müssen wir das selbst CI gemacht. Haben machen? Was kostet uns dort verschiedene der konfi- uns einfach zu viel Zirkus.“ Pipelines nicht, was die Optionen könntsind ihr verhindern, ... und„Cool, die Vor-dassund dieNach- ServicesSpaß nichtmonatlich?“ mehr so Einführung von crossfunktionalen Teams bei Julia: ich bin Frontend-Entwicklerin im Mu- guriert, die auf unser Git Repo lauschen. Bauen, testen, Lukas: „Und ihr, Lars?“ teile.“ funktionieren, wie ich es erwarte.“ Martin: „Keine Ahnung! Damit habe cosee zeigte sich schnell, dass sich diese Teams sicStore-Team. Was setzt ihr für eine Christian: „Ja, aber ...“ Frontend-Techno- deployen, Integrationstests undich mich noch Produktions-Deploy- Lars: „Bis zu zehnmal am Tag, Tendenz steigend. logie ein?“ nicht beschäftigt ments ...“ Regeln für eine effektive Zusammenarbeit geben Julia: „Ich glaube, dass eure Diskussion wichtig Ruben: ist. Sie– passiert „Lasst uns in jetzt alles automatisiert.“ unserer Retrospektive morgen Aber manchmal würde ich mir auch ein Betriebsteam Su: „Angular 2. Vorher habe ich bei einer Agentur 52 javamagazin 6 | 2017 müssen, die aus den Teams selbst kommen. www.JAXenter.de gehört aber nicht ins Daily Stand-up. Sienoch zu tiefGordon: geht einmal ins den „Wo ist eure Anwendung gehostet?“ Ablauf der verschiedene Technologieentscheidung wünschen.“ Porträt gearbeitet. Da habe ich eher Erfahrungen mit Lars:React „Wir ge-haben Maschinen, eine Da- Christian: „Das ist nicht dein Ernst!“ @onkelkodi Detail. Lasst uns das bitte im Nachgang besprechen.“ sammelt. Im Moment knabbereunter ich an dieeinem Lupe nehmen.“ Problem tenbank und Storage in der Cloud. Alle Ressourcen sind Lukas: „Wieso, Lars?“ Konstantin Diener ist CTOChristian: bei cosee. In„OK, mit AngulardieserJulia, du hast Recht.“ Funktion ...“ musste über Infrastructure as Code beschrieben.“ Lars: „Wir liefern unsere Services alle in Docker-Con- er der Versuchung widerstehen, dieJulia: „Echt? Ich habe relativ Welche Technologieentscheidungen Probleme viel Erfahrung mit gibt An-es mit Gordon: „Da fängt es ja schon an! Wir sind eines der tainern aus. Die komplette Infrastruktur zum Betreiben wieder zu zentralisieren, als erstegular. Probleme auftraten. Vielleicht Technologieentscheidungen Als ich dir helfen.“ kann im Team? letzten Produkte, dass noch On-Prem bei uns im Haus dieser Container mussten wir uns schrittweise selber Lösung hat er zusammen mit einemSu: Team bei cosee dendass be- wir unsSo oder läuft. in einer „Cool! Gut, zufällig Ihr ähnlichen kennengelernt wisst, was Form Abb. das1: Juliawird und Su bedeutet?“ mancher lernen sichEnt- zufällig beim Mittagessen kennen bauen. Die ersten paar waren noch kein Problem, aber schriebenen Leitfaden entwickelt. wickler solche Diskussionen auchdie schon 56 javamagazin 7 | 2017 haben.“ www.JAXenter.de Lukas: „Ihr habt noch altenerlebt haben. Organisationsstruk- mittlerweile sind wir bei rund sechzig Containern. Seit @onkelkodi Julia: „Ja, früher habe ich mit Oftallen trifftturen ein einzelner Frontend-Ent- und verwendet Entwickler alleinedie Maschinen, einenichtTech- unter eurer letzter Woche hosten und warten wir sogar ein Kuber- nologieentscheidung, ohne Porträt mit den anderen im Team wicklern in einem Team zusammengearbeitet. Hoheit Daliegen, kann- sondern von den restlichen Kollegen im netes selber, um die ganzen Container zu betreiben!“ te ich alle. Heute nicht mehr!“ Betriebsteam betrieben werden.“ Konstantin Diener ist CTO bei cosee. Dort experimentiert Gordon: er seit „Ihr seid ja heiß drauf! Davon kann ich nur In einer anderen Ecke der Küche sitzen Lukas und einiger Zeit mit Communities of Practice und hatWir träumen. mit seinem hosten gar nichts selber. Wir haben nur Christian mit Lars und Jerome zusammen. Vor der Um- Team schon einige Erkenntnisse gesammelt. ein paarMittlerweile gibt inoffizielle er Testumgebungen, von denen die Be- 54 stellung auf crossfunktionale Produktteams haben die diese Erkenntnisse in Form von Trainings weiter. nichts wissen dürfen.“ triebsjungs javamagazin 8 | 2017 Porträt www.JAXenter.de vier im Backend-Team zusammengearbeitet. @onkelkodi Lars: „So traumhaft finde ich das gar nicht. Wir ent- https://cosee.biz/trainings/cop-training.html Lars: „Hallo Christian, hi Lukas, wie läuft’s Konstantin Diener ist CTO bei cosee. Dort gab es in der Vergan- bei euch?“ wickeln eigentlich ein E-Book-Produkt und wollen uns genheit noch nie dedizierte Ops-Teams, weil die Produkte alle darauf konzentrieren. Und jetzt müssen wir ein Kuber- sehr früh auf den Einsatz von Cloud-Technologien setzten. netes betreiben – selber patchen, updaten usw. Das ma- Mittlerweile denkt er mit seinen Kollegen über interne Ops für chen bei eurer Infrastruktur alles die Betriebsjungs für Build/Deployment as a Service nach. euch.“ www.JAXenter.de javamagazin 9 | 2017 25 @onkelkodi https://to.cosee.biz/cop Lukas: „Wir haben langsam auch so viele Services, dass sich ein Kubernetes lohnen würde. Vielleicht kön- 48 javamagazin 10 | 2017 www.JAXenter.de
Kolumne: DevOps Kolumne Kolumne: DevOps Stories DevOps Stories von Konstantin Diener von Konstantin Diener (Un)regelmäßige Integration: Stolpersteine für Continuous Integration Nur noch wenige Stunden bis zum Sprint Review. Das zukommt. Die Anzahl der Testfälle ist aber fast gleich MusicStore-Team arbeitet intensiv daran, letzte Stories geblieben.“ fertigzustellen. Martin: „Ich habe doch gesagt, dass das Feature kniff- Martin: „Tschakka, Erster!“ lig war. Für zusätzliche Tests hatte ich keine Zeit!“ Christian: „Hä?“ Ruben: „In unserer Definition of Done steht doch Martin: „Ich habe meinen Feature Branch in den aber, dass es für jede Klasse Tests gibt.“ Master gemergt. Das war ein hartes Stück Arbeit. Ihr Martin: „Die gibt es ja auch. Nur halt nicht für die müsst bei euren Branches aufpassen. Ich habe vor allem neuen Funktionen.“ in den Services für den Recommender und die Timeline Christian: „Na, das ist doch sowieso egal. Ein Teil der einiges geändert.“ vorhandenen Tests schlägt seit ungefähr einer Woche Christian: „Super, ich auch. Und wenn ich das richtig fehl, und das interessiert hier auch niemanden.“ verstanden habe, hat Lukas dort auch einiges geändert.“ Martin: „Aber ich musste doch das Feature fertigma- Lukas: „Ja, habe ich.“ chen, damit wir es im Review zeigen können ...“ Christian: „Und Martin ist noch stolz drauf, dass wir Lukas: „Wie möchtest du das Feature denn im Review jetzt die Merge Hell haben! Danke, Martin. Wir haben zeigen? Die Tests schlagen fehl und der Build ist rot. Der noch zwei Stunden bis zum Review und dürfen das jetzt neue Code ist also nicht auf der Demo-Environment de- unter Hochdruck zusammenpuzzeln.“ ployt worden.“ Martin: „Sorry, aber das Feature war echt knifflig. Ich Martin: „Ups, stimmt. Wollen wir dann die Tests fürs habe ja beinahe den ganzen Sprint für die Entwicklung Review ausschalten und danach wieder an?“ gebraucht.“ Christian: „Was ein Quatsch. Dann können wir deinen Ruben: „Der Build nach deinem Merge ist gerade Kram gleich von Hand auf der Umgebung deployen!“ gelaufen. Ich hätte erwartet, dass einiges an Tests da- Martin: „Aber dann hätten wir doch keine Conti- nuous Integration mehr.“ Ruben: „Haben wir die denn jetzt?“ Porträt Continuous Integration heißt ... Konstantin Diener ist CTO bei cosee. Er beobach- Rubens Frage ist absolut berechtigt. Ja, das Team hat tet immer wieder die Probleme von Continuous einen Continuous-Integration-Server, der auf Ände- Isolation und CI Theatre. Als CTO versucht er, die rungen im Versionskontrollsystem reagiert, den Build Teams bei der Anwendung von Trunk Based durchführt und im Erfolgsfall das entstandene Artefakt Development und sinnvoller CI zu unterstützen. auf eine Umgebung deployt. Aber bringt dieser Prozess @onkelkodi https://cosee.biz dem Team im aktuellen Zustand irgendeinen Erkennt- nisgewinn? 30 javamagazin 12 | 2018 www.JAXenter.de
cosee TechTalks talks.cosee.biz
Dieser Vortrag bei euch? cosee.biz Picture credits: Verkehrszeichen: https://www.shutterstock.com/g/FocusDzign Theaterbühne: https://www.shutterstock.com/g/Mario+Lisovski Autobahnbaustelle: https://www.istockphoto.com/de/portfolio/orinoco-art Handzeichen: https://www.shutterstock.com/de/g/robertkneschke Konstantin Diener | cosee GmbH konstantin.diener@cosee.biz | @onkelkodi
Sie können auch lesen