Wie mit Bitbucket, Bitbucket Pipelines, Git und Webhooks der automatische Deployment Prozess vereinfacht und optimiert werden kann.
Durch die Schnelllebigkeit der heutigen Welt ist Agilität im Software Engineering zentral geworden. Software muss sich den Gegebenheiten anpassen und weiterentwickelt werden können. Es ist daher nötig, interne Prozesse zur Bereitstellung von Software so weit wie möglich zu automatisieren. Gerade die Softwareverteilung, die sogenannten Deployments, bieten sich dafür stark an. Wir erklären Ihnen, wie unser automatisches Deployment funktioniert und welche Tools wir dafür einsetzen.
Was sind automatische Deployments?
Ein Deployment bezeichnet die Verteilung beziehungsweise die Bereitstellung von Software. Dieser Prozess kann halb- oder vollautomatisch ablaufen. Durch vollautomatische Deployments kann der manuelle Aufwand bei einem Deployment eliminiert werden.
Ein “traditionelles” Deployment umfasst folgende Schritte:
- Zusammenstellung des Releases
- Vorbereiten des Releases mit allen nötigen Konfigurationen
- Buildprozess und Durchlaufen von automatisierten Tests
- Einspielen in das Abnahmesystem
- Anwendertests / Abnahme
- Verteilung der Software im Produktivsystem
Bei einem automatischen Deployment werden all jene Schritte automatisch ausgeführt, die keiner manuellen Interaktion bedürfen. Das Deployment selbst verläuft danach vollautomatisch, daher wird ein Release auf einer Plattform ohne jegliche manuelle Arbeit eingespielt. Dieser Vorgang kann dabei von einem Entwickler direkt ausgeführt werden, ohne dass ein weiterer Experte dafür benötigt wird. Somit können neue Features oder ganze Plattformen schnell und einfach von einer Umgebung (bspw. Staging zu Produktion) zur anderen verschoben werden.
Continuous Integration, Continuous Delivery und Continuous Deployment beschreiben den automatisierten Prozess von der Erstellung des Codes, über das Testing und Merging hin zur Bereitstellung im Repository sowie dem Deployment auf Produktion.
Automatische Deployments bei cloudtec
Um ein Deployment auszuführen, müssen Änderungen am Code vorhanden sein. Diese Änderungen können neue Files oder neue/veränderte Zeilen innerhalb von bestehenden Files sein oder auch Datenbank-Anpassungen. Normalerweise entwickelt ein Entwickler ein neues Feature oder eine Änderung in seiner eigenen Entwicklungsumgebung. Jede Anpassung oder Erweiterung des Codes muss die automatisierten Tests durchlaufen, bevor die neueste Version veröffentlicht werden kann.
Die erstellten Änderungen werden in einem sogenannten “Commit” zusammengefasst und bereitgestellt. Sobald ein Commit erstellt wurde, muss er auf einen Branch im Repository gepusht werden. Damit wird der Prozess zum Testen des neuen Codes angestossen. Der Commit landet in einer Pipeline. Eine Pipeline ist eine laufende Softwareumgebung, welche parallel mehrere Testing Prozesse auslöst. So werden in der cloudtec Umgebung zwei Arten von automatischen Tests durchgeführt: verhaltensbasierte Tests (Behat Tests) sowie funktionale Tests (Unit-Tests). Verhaltensbasierte Tests simulieren die Interaktion eines Benutzers mit der Software. Funktionale Tests hingegen kontrollieren, ob ein Software-Teil korrekt funktioniert und ob der Code stimmt.
Nachdem ein Commit die Tests in der Pipeline erfolgreich absolviert hat, kann ein Pull Request für die Änderungen erstellt werden. Dieser Pull Request muss anschliessend von einem zweiten Entwickler kontrolliert und freigegeben werden. Danach kann die Änderung des Commits in den Branch der Software gemerged werden. Dieses Zusammenführen des Codes löst automatisch ein Deployment auf die entsprechende Umgebung aus. Durch das Deployment wird der Zugang zu einem System (z.B. eine Website oder ein Kundenportal) für kurze Zeit unterbrochen. Während dieser Zeit werden automatisch der aktualisierte Source Code und Daten auf dem Ziel-Branch ausgetauscht und somit die neuste Version des Codes veröffentlicht.
Damit das automatische Deployment funktioniert, werden folgende Tools eingesetzt:
- Git für die Verwaltung der Versionen des Codes
- Bitbucket wird zur Verwaltung des Source-Codes, der Repositories, der commits, branches und pull requests verwendet
- Bitbucket Pipelines wird zum automatischen und parallelen ausführen von verschiedenen Test-Prozessen verwendet
Vorteile von automatischen Deployments
Automatische Deployments bringen viele Vorteile mit sich. Wir bei cloudtec konnten folgende Vorteile erkennen:
- Mehr Stabilität durch regelmässiges ausführen des Prozesses
- Weniger Überlastung des Entwicklungsteams
- Tiefere Kosten durch verringerter manueller Aufwand
- Schnellere Deployments durch Standardisierung
- Weniger manuelle Arbeiten = weniger Fehler
Suchen Sie einen Partner, der Ihnen eine Plattform mit kontinuierlicher Softwareauslieferung aufbaut?
Wir sind der richtige Partner für Sie! Mit unserem automatisierten Deployment Prozess können wir Ihnen regelmässige und stabile Softwareauslieferungen garantieren. Durch die Standardisierung unseres Prozesses konzentrieren wir uns von Anfang an voll und ganz auf Ihre individuellen Wünsche und Herausforderungen. Wir sind somit effizienter und Sie erhalten ein qualitativ hochstehendes Produkt für Ihr Budget.
Haben Sie Interesse an einer neuen Online-Plattform oder einem Kundenportal? Dann nutzen Sie unser Kontaktformular und erläutern Sie uns Ihr Projekt. Wir entwerfen auf Basis unseres Plattform-Stacks und unseres automatisierten Deployment Prozesses eine flexible Lösung für Sie.