Von meinem Rechner in die Cloud - entwicklertag.de · Kontakt Daniel Zwicker...

Preview:

Citation preview

Von meinem Rechner in die Cloud Continuous Integration wie maßgeschneidert

Vorraussetzungen

• Dependency-Management

• Buildsystem

• Jenkins

• Staging

• Management-Getrieben

Was braucht es wirklich?

• Ein Projekt (Java, Python, AngularJS……)

• Hier stimmt etwas nicht

• Der Wille etwas zu ändern

• Ok! Projektleitung

Wo wollen wir hin?

• Continuous Integration

• Einfache Build / Deploy Verfahren

• Höchst mögliche Sicherheit & Effizienz

• Staging Umgebungen / manuelles Testen

• “Die Cloud”

• Continuous Delivery

Build & Deploy

• Script(e) zum Erstellen und Deploy

• Lokales Ausführen

• Fehlersuche & Disaster Recovery

• Immutable Builds

Warum Docker? • Leichtgewichtig

• Sehr geringe Boot-Zeiten

• Mehr Kontrolle über Laufzeitumgebung

• Einfache Verteilung & Skalierung

• Einsatzgebiete:

• Anwendung

• Buildserver

Anwendung mit Docker

• Caching ist Alles!

• Clean Build: 55 sec

• Cached Build: 0,8 sec

• Häufige Änderungen ans Ende (Bauzeit)

• Reihenfolge Statements (übergreifend Bauzeit)

• Base-Images (Wiederverwendung / Bauzeit)

Base-Image Reihenfolge-> Cache

Shared User -> Volumes

Layer reduzieren / Aufräumen

Service-Ports

• Dockerfile

• Clean Build: 2,5 sec

• Keine Symlinks

App-Image dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

dddd

Artefakte im Docker-Context

Aufräumen

Demo

Warum den Buildserver?

• Lokal erstellen und ausprobieren (Fehlersuche)

• Keine Management-Attention

• Reproduzierbar / Wiederverwendbar

• Einfaches Umziehen (eigener Server / Cloud)

• Skalieren (Master / Slave, Cloud)

Jenkins-Container

• Konfiguration

• SCM-Config-Plugin

• Installierte Plugins

Dockerfile

Install Docker

Install Plugins & Konfiguration

Git konfigurieren

Demo

Cloud

• Images wiederverwenden

• Fast kein Aufwand

• Images veröffentlichen (docker push)

• Z.B.: @ Docker Hub

swarm.json

Demo

Fazit

• Lokales Ausführen durch Skripte

• CI-Server schnell aufsetzen / umziehen / erweitern /

skalieren

• Artefakt-Grenze erweitern / Immutable Builds

• Einfach auch in die Cloud

Kontakt

Daniel Zwicker

email@daniel-zwicker.de

Demo Projekt: https://github.com/dzwicker/docker-jenkins-demo.git

Quellen: https://www.docker.com

http://jenkins-ci.org

http://www.atomrain.com/it/software-process/continuous-integration-quality-fast-track

Recommended