+ All Categories
Home > Documents > Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ......

Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ......

Date post: 09-Mar-2018
Category:
Upload: phungmien
View: 229 times
Download: 4 times
Share this document with a friend
7
Grundlagen der Continuous Integration mit s erver und Jenkins Zend Blueprint für Continuous Delivery von Slavey Karadzhov
Transcript
Page 1: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Grundlagen der Continuous Integration

mit

serverundJenkins

Zend Blueprint für Continuous Delivery

von Slavey Karadzhov

Page 2: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Zend Technologies, Inc. · www.zend.com 2

Grundlagen der Continuous Integration mit Jenkins und Zend Server

EinführungContinuous Delivery ist eine Methodologie, eine Änderung der Denkweise und eine Führungspraxis, die sich darauf konzentriert, während des gesamten Lebenszyklus der Softwareapplikation eine schnelle Applikationsbereitstellung und -auslieferung zu erreichen. Dies benötigt die Einführung von Automatisierung, um in der Software-Auslieferungspipeline manuelle Prozesse zu optimieren und Konsistenz und Wiederholbarkeit sowie eine verbesserte Zusammenarbeit und gemeinsame Metriken und Prozesse über Dev- und Ops-Teams hinweg durchzusetzen. [1]

Eine der grundlegenden Anforderungen für das Errichten von Continuous Delivery ist die Implementierung eines automatisierten Continuous Integration-Systems, mit dem die Applikation, angefangen von den Codekomponenten und -ressourcen bis hin zu einem deploymentfähigen Paket, automatisch und konsistent erstellt wird.

In diesem Papier werden die Schritte und Vorteile der Implementierung eines Continuous Integration-System unter Verwendung von Jenkins und der Zend Server Continuous Delivery-Plattform demonstriert.

Der Zend Blueprint für Continuous DeliveryZends Blueprint für Continuous Delivery schreibt Best Practices für die Implementierung der einzelnen Schritte des Zyklus der Softwarebereitstellung und -auslieferung fest und bietet Pattern, die mit Zend Server, (Zends Plattform für Continuous Delivery von PHP-Applikationen) integriert sind und dabei helfen, diese Best Practices zu implementieren.

Der Blueprint bietet Richtlinien zur zugrunde liegenden Infrastruktur, die erstellt werden muss, um optimale Ergebnisse zu liefern. Das Ziel ist es, praktische Ansätze zu implementieren, die jeden Schritt im Prozess beschleunigen und stärken, um Applikationen schneller vom Code in die Produktion zu bringen.

Dieses Modell für Continuous Delivery basiert auf praktischen Implementierungskonzepten, die über die Erfahrung des Zend Professional Services-Teams bei der Arbeit mit zahlreichen großen und kleinen Kunden gesammelt wurden.

Der Blueprint für Continuous Delivery

Versions-kontrolle

Continuous IntegrationInfrastruktur-

automatisierungRelease-

Automatisierung

Qualitätskontrolle &

Genehmigungen

Applikations-

ManagementBuild Codequalität Packaging

Entwickler, die

in Zweigen

arbeiten. Lösen CI

bei Zusammen-

führung in Master-

Hauptzweig/-

stamm aus

Erfassen und

Organisieren

von

Applikations-

artefakten und

-abhängigkei-

ten

Ausführen

von Unit-Tests

und statischen

Tools für die

Codeanalyse, um

die Codequalität

sicherzustellen

Zusammenstellen

von Applikations-

artefakten,

einschl.

Abhängigkeiten &

Konfiguration, in

ein deploybares,

validiertes

Package

Automatisierte

Bereitstellung

von Infrastruktur-

ressourcen &

Plattformen

Automatisiertes

Applikations-

deployment

über alle

Laufzeitumgebung-

en hinweg

Projektspezifische

funktionelle Tests

& Freigabe für die

Produktion

Bereitstellung

von sofortigem

Feedback und

Diagnosen

zur deployten

Applikation für

Entwicklungs-

und Operations-

Teams

Erfahren Sie mehr über den Blueprinthttp://www.zend.com/de/solutions/continuous-delivery

Der Blueprint für die Continuous Delivery

Page 3: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Zend Technologies, Inc. · www.zend.com 3

Grundlagen der Continuous Integration mit Jenkins und Zend Server

Continuous Integration: Die Grundlagen

Ein Hauptprinzip eines Continuous Delivery Ansatzes ist, dass die Applikation immer bereit für die Produktivumgebung ist. Dies bedeutet, dass alle zum Erstellen der Applikation erforderlichen Artefakte in einem Versionskontrollsystem gespeichert und verwaltet werden, und dass Code konsistent und regelmäßig in die Quell-Hauptlinie eingecheckt wird, um kleine Erweiterungen zwischen Builds zu gewährleisten. Im Grunde muss der Code in der Hauptlinie kontinuierlich bereit für die Produktivumgebung sein.

Es gibt drei wichtige und grundlegende Elemente, die jedes Continuous Integration-System unterstützen.

1. 1. Verpflichtung zu Building-Tests. Dies ist das erste der wichtigsten Elemente. Die Verpflichtung des Entwicklungsteams, eine umfassende Testsuite auf Unit- und Funktionsebene zusammen mit ihrem Code herzustellen. Dies ist wichtig, um das ‘garantierte’ Niveau an Codequalität zu erreichen, das jederzeit produktionsbereit sein kann.

2. 2. Den Build niemals abbrechen. Das Ziel ist, dass die Applikation bereit sein muss, bei jeder eingereichten Änderung erstellt, gepackt und deployt werden zu können. Dies bedeutet natürlich, dass beschädigter oder nicht getesteter Code niemals eingereicht werden sollte.

3. Versionskontrolle. Ein weiteres grundlegendes Element für die Continuous Integration ist die Versionskontrolle. Um sich auf die Implementierung der Continuous Integration konzentrieren zu können, muss der Code unter Verwendung strikter Richtlinien für die Versionskontrolle verwaltet werden.

Wenn der Code stets produktionsbereit ist und durch strikte Richtlinien für die Versionskontrolle verwaltet wird, und das Entwicklungsteam eine agile Praxis für die Entwicklung und das Unit-Testing übernommen hat, können Organisationen damit beginnen, eine Continuous Integration-Umgebung zu implementieren.

Anschließend kann jede individuelle Phase im Continuous Delivery-Blueprint implementiert werden, um den Continuous Delivery-Workflow zu vervollständigen. Das folgende Sequenzdiagramm enthält den empfohlenen Ablauf der Schritte in einem Continuous Delivery-Workflow.

Einchecken des neuen Codes

Einchecken des Fixes

Einchecken des Fixes

Continuous

Continuous

Auslösen

Feedback

Diagnose

Feedback aus der Produktivumgebung und Diagnosen Genehmigung

Source-ControlContinuous Integration

Unit-Tests des Builds

Automatisierte Akzeptanztests

Benutzer-AkzeptanztestsPackaging &

Deployment

Entw

ickl

er

Fehler

Fehler

Integration auslösen

Integration auslösen

Auslösen

Automatisierte Tests auslösen

Bereitstellungsumgebung und Deployment der Applikation

AuslösenBereitstellung in der Produktion Produktivumgebung

Der Continuous Delivery Workflow

Page 4: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Zend Technologies, Inc. · www.zend.com 4

Grundlagen der Continuous Integration mit Jenkins und Zend Server

Continuous Integration Der Continuous Integration Ansatz wurde entwickelt, um eine Automatisierungsumgebung zu erstellen, in der sichergestellt ist, dass alle Änderungen an der Applikation zu einer releasefähigen Version führen und dass jede Version auf Knopfdruck automatisch erstellt werden kann. Auf übergeordneter Ebene hat Continuous Delivery das Ziel, den gesamten End-to-End-Releaseprozess dieser Applikation berührungslos zu machen (zu automatisieren), wobei die erstellte Applikation (aus dem Continuous Integration-System) regelmäßig in die Test- und anschließend in die Produktivumgebungen geliefert wird. Das Ziel des Continuous Delivery-Zyklus ist es, Konsistenz und hohe Qualität zu gewährleisten, indem schnelles benutzerzentriertes Feedback zur Verfügung gestellt wird. [2] Continuous Integration ist ein wesentlicher Bestandteil der Continuous Delivery.

Das Ziel der Continuous Integration ist es, üblicherweise manuell ausgeführte Abschnitte im Entwicklungspro-zess der Applikation zu automatisieren, indem eine voll funktionsfähige Version der Software das erste Mal aus der Entwicklung in die Systemintegrations- und die Integrationstestphase verschoben wird.

Mit Continuous Integration werden Applikationen in einer sehr frühen Phase im Entwicklungsprozess in bestimmten Intervallen oder bei allen von den Entwicklern eingecheckten Änderungen erstellt. Dadurch wird die Notwendigkeit von Integrationstests und die Kosten im Zusammenhang mit der Zeit, die Entwickler in dieser Phase aufwenden, effektiv eliminiert. Dank der Möglichkeit der regelmäßigen stufenweisen Builds und der Anordnung eines umfassenden, automatisierten Testprozesses können Entwickler außerdem Probleme früh erkennen und als Folge eine höhere Applikationsqualität sicherstellen.

Um einen typischen Continuous Integration-Workflow darzustellen, nehmen Sie folgendes Szenario an:

Siehe Abbildung auf der nächsten Seite

1. Während der Entwicklung der Applikation arbeiten die Entwickler an ihren lokalen Computern, und sobald sie bereit sind, ihre neuen Codeänderungen zu übermitteln, reichen sie sie in ein zentrales Quellcode-Repository ein. Im untenstehenden Diagramm ist das Source Control Management- (oder Versionskontroll-) System ein Git-Repository.

2. Wenn der Code in die Hauptlinie eingecheckt wird (oder der Release-Manager Codeänderungen von einem der Entwickler zusammenführt), löst das Hinzufügen des neuen Codes zum Hauptzweig ein neues Release aus.

3. Das Continuous Integration-System (Jenkins in diesem Fall) überwacht das Versionskontrollsystem auf Änderungen und startet den Build-Prozess. Der Continuous Integration-Server erhält den Quellcode aus dem Repository.

4. Der Continuous Integration-Server erhält den Quellcode aus dem Repository.

5. Der Continuous Integration-Server führt Unit-Tests aus, um die Qualität zu validieren.

6. Der Continuous Integration-Server packt die Dateien in verteilbare Einheiten, deployt das Package auf einen Testserver und validiert das Package und die Grundfunktionalität, indem automatisierte Funktionstests ausgeführt werden können.

7. Der Continuous Integration-Server deployt dasselbe Package in die Testumgebungen, so dass ausführliche Benutzerakzeptanztests ausgeführt werden.

8. Sobald die Akzeptanztests erfolgreich sind, wird dasselbe Package auf den Produktionsservern deployt. Das Implementieren einer Infrastruktur- und Release-Automatisierung ermöglicht die End-to-End-Automatisierung sowie die Bereitstellung und das Deployment der Applikationspackages auf allen Servern mit einem Mausklick.

Page 5: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Zend Technologies, Inc. · www.zend.com 5

Grundlagen der Continuous Integration mit Jenkins und Zend Server

Vorteile der Zend Server- und Jenkins-IntegrationBei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten Bereitstellungsprozess aus dem Continuous Integration-System in das Staging oder die Produktivumgebung. Zend Server deployt das Package, ob im Staging oder in der Produktion, automatisch auf einen Server oder auf eine Gruppe von Servern. Wenn der Zielserver Teil eines Zend Server-Clusters ist, erhalten alle anderen Zend Server-Knoten im Cluster automatisch dieselbe Applikation und Konfiguration. Diese Fähigkeit, den gesamten Code, die Konfiguration und Bibliotheken, die für eine PHP-Applikation erforderlich sind, auf automatisierte Weise in einer geclusterten Umgebung zu verpacken und zu deployen, umfasst zusätzlich die Fähigkeit, im Bedarfsfall ein sofortiges Rollback über einen Cluster hinweg auf vorherige Applikationsversionen durchzuführen.

Zend Server bietet zudem den Vorteil, problemlos sicherzustellen, dass über Entwicklung, Test und Produktivumgebung hinweg ein gemeinsamer und konsistenter Applikationsstack sowie gemeinsame und konsistente Konfigurationen vorhanden sind. Dies beinhaltet Funktionen für das Bibliotheksmanagement, die sicherstellen, dass Framework-Versionen und andere Abhängigkeiten über die einzelnen Umgebungen hinweg ordnungsgemäß verwaltet werden. Dadurch ist es viel einfacher, Applikationen problemlos aus der Continuous Integration-/Entwicklungsumgebung in das Staging und die Produktivumgebung zu bringen. Zend Server stellt dem Team außerdem Warnmeldungen zur Verfügung, um durch Konfigurationsinkonsistenzen verursachte Fehler zu verhindern.

Commit Push

‘Master’-Zweig wird geklont

Tests Staging

Jenkins Cl

Source-Control

Unit-Test

Entwickler

Produktivumgebung

Build Packaging &Deployment

Validierungs-tests

Code-analyse

Der Continuous Delivery Workflow

Page 6: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Zend Technologies, Inc. · www.zend.com 6

Grundlagen der Continuous Integration mit Jenkins und Zend Server

Zend Server: Eine Plattform für die Continuous Delivery von PHP-Applikationen

Vollständige PHP-Laufzeitumgebung

Support & Sicherheitsfixes, Langzeit-Support

Optimierter Stack – Beschleunigung, Caching, Job Queue

ContinuousIntegration

PHP-Stack-Konsistenz

Fehlererkennung

Applikations- und Bibliotheks-Packaging

Release-Automatisierung

Cluster-Deployment

Abhängigkeiten & Versionierung

Automatisiertes Rollback

Automatisches Deployment bei

Aufwärtsskalierungon

Infrastruktur-automatisierung

AutomatisiertesCluster-Provisioning

Cloud-Elastizität

Multi-Server-Konfig-Mgmt.

Clustering & H/A

Automatische Skalierung

Applikations-management

Metriken & Trend-Dashboards

Ursachenanalyse

Transparenz fürDev/Ops

Änderungsverfolgung & Auditing

DevOps-Automatisierungs-APIs

Wie ermöglicht Zend Server Continuous Delivery?

Der Zend Blueprint für Continuous Delivery hat als Kern die Zend Server-Applikationsplatt-form. Zend Server ist konzipiert, um Ihnen dabei zu helfen, Ihre Applikationen schnell, iterativ und konsistent bereitzustellen.

Konsistent. Automatisiert. Kollaborativ. Kein Problem.

Standardisieren Sie Packaging- und Deployment-Tests.

Stellen Sie sofort eine standardisierte Applikationsinfrastruktur bereit.

Automatisieren Sie Deployment, Versionierung und Rollback von

Applikationen.

Verstehen & beheben Sie Produktionsprobleme, und iterieren Sie schnell.

Zend Server: Eine Plattform für Continuous Delivery von PHP-Applikationen

Page 7: Grundlagen der Continuous Integration - zend. · PDF fileDer Continuous Delivery Workflow. ... Bei der Integration mit Jenkins ermöglicht Zend Server einen komplett automatisierten

Zend Technologies, Inc. · www.zend.com 7

Grundlagen der Continuous Integration mit Jenkins und Zend Server

Über den AutorSlavey Karadzhov ist Senior Consultant bei Zend Technologies. Er ist PHP 5/5.3, Zend Framework und MySQL Certified Engineer. Stolzer Besitzer von zwei Hochschulabschlüssen – in Computer Science von der Universität in Sofia, Bulgarien, und in Software-Technologien von der Hochschule für angewandte Wissenschaften in Stuttgart, Deutschland. Slavey ist ein starker Verfechter von Open Source und anerkannter Software-Innovator sowie Autor eines Zend Framework 2-Buchs mit dem Titel ‘Learn ZF2: Learning By Example’ (http://learnzf2.com).

Zend Professional Services leiten Implementierungen von agilen Methodologien, Lösungen für das Applikationsdesign sowie für die Optimierung und Continuous Delivery in weltweit agierenden Unternehmen, die geschäftskritische PHP-Applikationen ausführen. Die Consultants konzentrieren sich auf die Beratung der Entwicklungs- und Operations-Teams ihrer Kunden, um Release qualitativ hochwertiger PHP-Applikationen schneller und mit höherer Performance und Verfügbarkeit zu liefern.

Hauptsitz: Zend Technologies, Inc. 19200 Stevens Creek Blvd. Cupertino, CA 95014, USA · Tel 1-408-253-8800 · Fax 1-408-253-8801

Deutschland/Österreich/Schweiz: Zend Technologies GmbH, St-Martin-Str. 53, 81669 München, Deutschland · Tel +49-89-516199-0 · Fax +49-89-516199-20

© 2014 Zend Corporation. Zend und Zend Server sind registrierte Marken von Zend Technologies Ltd. Alle anderen Marken sind Eigentum der jeweiligen Inhaber.

WP-Fundamentals of Continuous Integration with Jenkins and Zend Server-2014-03-31-DE www.zend.com

Über ZendZend arbeitet mit Unternehmen zusammen, um moderne Applikationen mobil und per Cloud schnell zur Verfügung zu stellen. Zend half bei der Etablierung von PHP mit, mit dem heute mehr als 200 Millionen Applikationen und Webseiten betrieben werden. Zends Flagship-Produkt, Zend Server, ist die führende Applikationsplattform für Continuous Delivery von PHP-Applikationen. Zend-Lösungen sind in über 40.000 Unternehmen im Einsatz, einschließlich NYSE Euronext, BNP Paribas, Bell Helicopter und anderen weltweit führenden Marken.

Referenzen und Ressourcen:[1] Zend Blueprint für Continuous Delivery, Zend Technologies,

www.zend.com/de/solutions/continuous-delivery

[2] http://www.thoughtworks.com/de/continuous-delivery


Recommended