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 unverzichtbarer Bestandteil jeder DevOps Toolchain ist ein Coderepository für jede Art von Quellcode der Software und Konfigurations- bzw. Automatisierungscode. In diesem Beitrag lernen wir Funktionen und Arbeitsweisen kennen, mit denen sich DevOps Prinzipien in der Praxis anhand von Atlassian Bitbucket als zentrales Versionskontrollsystem (VCS) umsetzen lassen.

Nennenswerte Themen in diesem Beitrag sind: 

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

Integration zwischen Jira und Bitbucket

Um an unseren letzten Blogbeitrag zum Thema DevOps Toolchain mit Atlassian anzuknüpfen, starten wir ausgehend von Atlassian Jira. Grundsätzlich verbessert die Integration der Tools die Nachverfolgbarkeit der Anforderungen und sorgt für mehr Transparenz im kompletten Entwicklungsprozess. Dadurch werden zum Beispiel unklare Randbedingungen ausgeschlossen. Des Weiteren werden weniger Fehler durch falsche Zuordnung oder fehlende Informationen begangen.

Jedes Jira-Ticket kann mit dem passenden Bitbucket Repository verbunden werden, in dem die Codebasis der Software liegt. Bitbucket baut hierzu auf dem weit verbreiteten Versionskontrollsystem Git auf. Dadurch wird es möglich, direkt aus dem Ticket heraus einen neuen Entwicklungszweig (Branch) für die Arbeit an einem neuen Feature oder Bugfix anzulegen. Ein Branch ist eine Abzweigung der Codebasis als eigener Arbeitsbereich. In diesem Bereich können Änderungen vorgenommen werden, ohne die Codebasis paralleler Arbeiten oder der produktiven Software zu verändern. Atlassian integriert die Tools hier besonders gut, sodass unser Ticket durch die Arbeit am Code zum Beispiel automatisch vom Status "offen" in den Status "In Bearbeitung" gesetzt werden kann. 

1 Atlassian Jira Developer Panel

Im sogenannten Developer Panel des Jira Tickets werden wichtige Informationen zum Entwicklungsstand angezeigt: Code-Commits, Branches, Pull Requests bis hin zu Builds und Deployments eines CI/CD-Tools mit ihrem jeweiligen Status. Fehlerentwicklung durch fehlende Informationen oder falsche Annahmen gehören damit der Vergangenheit an.

Auch ein Wechsel zwischen den Tools, zum Beispiel in die Commits im Bitbucket und zurück, ist darüber sehr einfach. Es genügt die betreffende Ticketnummer im Commit zu erwähnen. Der Entwickler hat während des Programmierens alle dazugehörigen Anforderungen vorliegen, die er mit Hilfe von Code umsetzen soll. Diese Nachverfolgbarkeit der Anforderungen ist ein wichtiges Feature, welches durch die Integration der Tools entsteht. 

Die Integrationsmöglichkeiten sorgen damit zum einen für mehr Transparenz und zum anderen für Zusammenarbeit im Team.

Bild: 1 Atlassian Jira Developer Panel

Wissensaustausch und Code-Qualität

Ein weiterer Vorteil von Bitbucket ist die integrierte Weboberfläche. Dort sind alle Informationen und Funktionen für die Anwender sehr übersichtlich dargestellt und einfach zugreifbar. Ein Blick in den Quellcode ist damit über den Browser auch ohne Kenntnis der Git-Kommandozeilenbefehle möglich.

Bitbucket kann die komplette Versionshistorie des Codes im Browser anzeigen und durchsuchen. Dadurch können beispielsweise Fehleranalysen vereinfacht oder ein alter Code für einen Rollback wieder zurückgeholt werden. Darüber hinaus kann der Code auch verglichen (Diff) und zusammengefügt (Merge) werden.

Ein häufig unterschätzter Wert einer leistungsfähigen zentralen Code-Verwaltung wie Bitbucket liegt im Wissensaustausch und der Code-Qualität. Eine Entstehungsgeschichte der Software lässt sich im Bitbucket ablesen. Anhand dieser können Referenzlösungen wiederverwendet oder Entscheidungen nachvollzogen werden. Dem Junior-Softwareentwickler wird damit der Einstieg erleichtert und der Know-how Austausch unter den Kollegen von Beginn an gefördert.

Atlassian Bitbucket Code-Review

Bitbucket bietet die Möglichkeit gemeinsamer 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 anderen parallelen Entwicklungen zusammenführen (Merge) bzw. integrieren. Die Funktionen der Darstellung von Code-Unterschieden und Kommentaren bzw. Diskussionen an einzelnen Code-Zeilen macht gemeinsame Arbeit am Code noch einfacher. Das Wissen des gesamten Teams und darüber hinaus kann nun genutzt werden und in beide Richtungen zwischen Entwicklern und Reviewern wandern. Erfahrene Entwickler können auf einfache Weise Domänenexperten hinzuziehen. Lösungen werden damit effizienter und fehlerfreier ("Shift Left" Prinzip). Die Code-Qualität lässt sich auf diese Weise entscheidend verbessern.

Bild: Atlassian Bitbucket Code-Review

Atlassian Bitbucket Versionshistorie

Versionierung

In DevOps-Teams muss diese Integration so oft wie möglich und mit vorzugsweise wenig Code geschehen. Eventuelle Fehler werden schon früh im Entwicklungsprozess oder sehr früh nach Release erkannt. Es sind bis dahin weniger Implementierungen und Abhängigkeiten entstanden, wodurch für eine Fehleranalyse weniger Zeit benötigt wird. Es kann schneller korrigiert oder zurückgerollt werden. Eine kontinuierliche Entwicklung und ein Release neuer Features oder Bugfixes wird darüber erst ermöglicht.

Auch kann bei kleinen Commits jede einzelne Änderung nachvollziehbarer dokumentiert werden. Deren Entstehung ist für andere nachvollziehbarer bzw. transparenter.

Bild: Atlassian Bitbucket Versionshistorie

Configuration as Code

Bitbucket sollte nicht nur den Code der Software enthalten. Ein hoher Automatisierungsgrad wird immer von zahlreichen Scripten oder deklarativen Beschreibungen begleitet. 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 sogenannten Pipeline ausgehend vom Commit, über Build, Test, Integration, Delivery, Release und Deployment, sollten soweit möglich deklarativ beschrieben werden. All diese Informationen bzw. Dateien lassen sich ebenso im Bitbucket ablegen. Die bisher beschriebenen Vorteile der Zusammenarbeit, Transparenz, Integration, Reviews und des Wissensaustauschs sind damit unmittelbar einsetzbar.

Atlassian Bitbucket Volltextsuche

Enterprise Readiness

Für den Unternehmenseinsatz sind zahlreiche Funktionen wichtig, mit denen Bitbucket das Versionskontrollsystem Git gezielt erweitert. Hierzu zählen unter anderem Berechtigungseinstellungen für Nutzer und Gruppen, eine Volltextsuche über Repositories und einzelne Dateien oder verschiedene Authentifizierungsvarianten von SAML über SSH bis User Tokens. 

Bild: Atlassian Bitbucket Volltextsuche

Bitbucket ist durch Apps aus dem Atlassian Marketplace leicht erweiterbar oder mit Webhooks mit weiteren Komponenten der Toolchain integrierbar.

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

Maxym Basenko
29. März 2022 

Sie haben Fragen oder möchten sich von uns beraten lassen?

Gerne stehen wir für Ihre Fragen zur Verfügung. Nutzen Sie einfach unser Kontaktformular.