Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

DevOps Toolchain mit Atlassian -Teil 2: Bitbucket

In diesem Beitrag steht das Tool Bitbucket der Atlassian Toolchain im Fokus. Es wird beschrieben wie wichtig dieses Tool für die Entwicklung von Software ist und wie es im DevOps Kontext eingesetzt wird.

Ein unver­zicht­ba­rer Bestandteil jeder DevOps Toolchain ist ein Coderepository für jede Art von Quellcode der Software und Konfigurations- bzw. Automatisierungscode. In die­sem Beitrag ler­nen wir Funktionen und Arbeitsweisen ken­nen, mit denen sich DevOps Prinzipien in der Praxis anhand von Atlassian Bitbucket als zen­tra­les Versionskontrollsystem (VCS) umset­zen lassen.

Nennenswerte Themen in die­sem Beitrag sind: 

  • Zusammenarbeit und Kommunikation
  • Transparenz
  • Wissensmanagement
  • Kontinuierliche Entwicklung
  • Automatisierung
  • Shift Left
  • Configuration Management

Integration zwi­schen Jira und Bitbucket

Um an unse­ren letz­ten Blogbeitrag zum Thema DevOps Toolchain mit Atlassian anzu­knüp­fen, star­ten wir aus­ge­hend von Atlassian Jira. Grundsätzlich ver­bes­sert die Integration der Tools die Nachverfolgbarkeit der Anforderungen und sorgt für mehr Transparenz im kom­plet­ten Entwicklungsprozess. Dadurch wer­den zum Beispiel unklare Randbedingungen aus­ge­schlos­sen. Des Weiteren wer­den weni­ger Fehler durch fal­sche Zuordnung oder feh­lende Informationen begangen.

Jedes Jira-Ticket kann mit dem pas­sen­den Bitbucket Repository ver­bun­den wer­den, in dem die Codebasis der Software liegt. Bitbucket baut hierzu auf dem weit ver­brei­te­ten Versionskontrollsystem Git auf. Dadurch wird es mög­lich, direkt aus dem Ticket her­aus einen neuen Entwicklungszweig (Branch) für die Arbeit an einem neuen Feature oder Bugfix anzu­le­gen. Ein Branch ist eine Abzweigung der Codebasis als eige­ner Arbeitsbereich. In die­sem Bereich kön­nen Änderungen vor­ge­nom­men wer­den, ohne die Codebasis par­al­le­ler Arbeiten oder der pro­duk­ti­ven Software zu ver­än­dern. Atlassian inte­griert die Tools hier beson­ders gut, sodass unser Ticket durch die Arbeit am Code zum Beispiel auto­ma­tisch vom Status "offen" in den Status "In Bearbeitung" gesetzt wer­den kann. 

Im soge­nann­ten Developer Panel des Jira Tickets wer­den wich­tige Informationen zum Entwicklungsstand ange­zeigt: Code-Commits, Branches, Pull Requests bis hin zu Builds und Deployments eines CI/CD-Tools mit ihrem jewei­li­gen Status. Fehlerentwicklung durch feh­lende Informationen oder fal­sche Annahmen gehö­ren damit der Vergangenheit an.

1 Atlassian Jira Developer Panel

Auch ein Wechsel zwi­schen den Tools, zum Beispiel in die Commits im Bitbucket und zurück, ist dar­über sehr ein­fach. Es genügt die betref­fende Ticketnummer im Commit zu erwäh­nen. Der Entwickler hat wäh­rend des Programmierens alle dazu­ge­hö­ri­gen Anforderungen vor­lie­gen, die er mit Hilfe von Code umset­zen soll. Diese Nachverfolgbarkeit der Anforderungen ist ein wich­ti­ges Feature, wel­ches durch die Integration der Tools entsteht. 

Die Integrationsmöglichkeiten sor­gen damit zum einen für mehr Transparenz und zum ande­ren für Zusammenarbeit im Team.

Wissensaustausch und Code-Qualität

Ein wei­te­rer Vorteil von Bitbucket ist die inte­grierte Weboberfläche. Dort sind alle Informationen und Funktionen für die Anwender sehr über­sicht­lich dar­ge­stellt und ein­fach zugreif­bar. Ein Blick in den Quellcode ist damit über den Browser auch ohne Kenntnis der Git-Kommandozeilenbefehle mög­lich.

Bitbucket kann die kom­plette Versionshistorie des Codes im Browser anzei­gen und durch­su­chen. Dadurch kön­nen bei­spiels­weise Fehleranalysen ver­ein­facht oder ein alter Code für einen Rollback wie­der zurück­ge­holt wer­den. Darüber hin­aus kann der Code auch ver­gli­chen (Diff) und zusam­men­ge­fügt (Merge) werden.

Ein häu­fig unter­schätz­ter Wert einer leis­tungs­fä­hi­gen zen­tra­len Code-Verwaltung wie Bitbucket liegt im Wissensaustausch und der Code-Qualität. Eine Entstehungsgeschichte der Software lässt sich im Bitbucket able­sen. Anhand die­ser kön­nen Referenzlösungen wie­der­ver­wen­det oder Entscheidungen nach­voll­zo­gen wer­den. Dem Junior-Softwareentwickler wird damit der Einstieg erleich­tert und der Know-how Austausch unter den Kollegen von Beginn an gefördert.

Apps4x

Bitbucket bie­tet die Möglichkeit gemein­sa­mer Code-Reviews über so genannte Pull Requests. Hier stellt der Entwickler seine Umsetzung im Team zur Diskussion und kann sie anschlie­ßend direkt im Bitbucket mit ande­ren par­al­le­len Entwicklungen zusam­men­füh­ren (Merge) bzw. inte­grie­ren. Die Funktionen der Darstellung von Code-Unterschieden und Kommentaren bzw. Diskussionen an ein­zel­nen Code-Zeilen macht gemein­same Arbeit am Code noch ein­fa­cher. Das Wissen des gesam­ten Teams und dar­über hin­aus kann nun genutzt wer­den und in beide Richtungen zwi­schen Entwicklern und Reviewern wan­dern. Erfahrene Entwickler kön­nen auf ein­fa­che Weise Domänenexperten hin­zu­zie­hen. Lösungen wer­den damit effi­zi­en­ter und feh­ler­freier ("Shift Left" Prinzip). Die Code-Qualität lässt sich auf diese Weise ent­schei­dend ver­bes­sern.

blank
Atlassian Bitbucket Code-Review

Versionierung

In DevOps-Teams muss diese Integration so oft wie mög­lich und mit vor­zugs­weise wenig Code gesche­hen. Eventuelle Fehler wer­den schon früh im Entwicklungsprozess oder sehr früh nach Release erkannt. Es sind bis dahin weni­ger Implementierungen und Abhängigkeiten ent­stan­den, wodurch für eine Fehleranalyse weni­ger Zeit benö­tigt wird. Es kann schnel­ler kor­ri­giert oder zurück­ge­rollt wer­den. Eine kon­ti­nu­ier­li­che Entwicklung und ein Release neuer Features oder Bugfixes wird dar­über erst ermöglicht.

Auch kann bei klei­nen Commits jede ein­zelne Änderung nach­voll­zieh­ba­rer doku­men­tiert wer­den. Deren Entstehung ist für andere nach­voll­zieh­ba­rer bzw. trans­pa­ren­ter.

blank
Atlassian Bitbucket Versionshistorie

Configuration as Code

Bitbucket sollte nicht nur den Code der Software ent­hal­ten. Ein hoher Automatisierungsgrad wird immer von zahl­rei­chen Scripten oder dekla­ra­ti­ven Beschreibungen beglei­tet. Als Beispiel seien hier Scripte für das Deployment der Software (Bash, PowerShell, Ansible, Puppet etc.), Definitionen einer Infrastruktur (Terraform, CloudFormation, ARM, HELM etc.) oder auch Containerbeschreibungen (Dockerfiles etc.) genannt. Auch die Definition einer soge­nann­ten Pipeline aus­ge­hend vom Commit, über Build, Test, Integration, Delivery, Release und Deployment, soll­ten soweit mög­lich dekla­ra­tiv beschrie­ben wer­den. All diese Informationen bzw. Dateien las­sen sich ebenso im Bitbucket able­gen. Die bis­her beschrie­be­nen Vorteile der Zusammenarbeit, Transparenz, Integration, Reviews und des Wissensaustauschs sind damit unmit­tel­bar einsetzbar.

Enterprise Readiness

Für den Unternehmenseinsatz sind zahl­rei­che Funktionen wich­tig, mit denen Bitbucket das Versionskontrollsystem Git gezielt erwei­tert. Hierzu zäh­len unter ande­rem Berechtigungseinstellungen für Nutzer und Gruppen, eine Volltextsuche über Repositories und ein­zelne Dateien oder ver­schie­dene Authentifizierungsvarianten von SAML über SSH bis User Tokens. 

blank
Atlassian Bitbucket Volltextsuche

Bitbucket ist durch Apps aus dem Atlassian Marketplace leicht erwei­ter­bar oder mit Webhooks mit wei­te­ren Komponenten der Toolchain integrierbar.

Im nächs­ten Blogartikel gehe ich auf das CI/CD-Tool Atlassian Bamboo und die Integration mit Bitbucket ein. Dabei wer­den die Phasen Build und Deploy, sowie die CI/CD-Pipeline aus dem DevOps-Kontext, näher beleuchtet.

Related Posts

Kommentar hinterlassen


Pin It on Pinterest