Stabile und skalierbare Testumgebungen sind seit jeher schwer aufzusetzen und zu warten. Besonders in Zeiten von Continuous Delivery ist das Aufsetzen von Build-Pipelines in Verbindung mit automatisierten Integration- und UI-Tests eine besonders große Herausforderung. Einen eleganten Ausweg bieten containerbasierte Testumgebungen, die dynamisch zum Build-Zeitpunkt bereitgestellt werden. Der Talk zeigt anhand von mehreren Live-Demos, wie mit Hilfe von OpenShift-Build-Pipeline sowohl Server-APIs als auch grafische Web- und Rich-Client-Oberflächen getestet werden können. Zum Einsatz kommen hierfür die Open-Source-Test-Frameworks Citrus und Sakuli, die bereits für die Verwendung in OpenShift vorbereitet sind.
3. Seite 4
DEV
Prozess Development -> QA Stage
Code
Build & Test
Deploy in Dev
Container
Image
Container
Registry
POD
OPS
Deploy in QA
POD
AUTOMATISCH
MANUEL ODER AUTOMATISCH
4. Seite 5
OPS
Prozess QA -> Production Stage
Deploy in
Produktion
Container
Image from QA Stage
Container
Registry
POD
MANUEL
5. Seite 6
CI / CD
Build Pipeline?
OpenShift Komponenten
11. Seite 12
Transformation to OpenShift
Ziele:
• Sourcecode der Apps nicht verändern
• Testcode nicht verändern
• Vollautomatisiert bis in die Produktion
• All-in-OpenShift (CI, Build, Test, Deployment)
• Jenkins v1 -> v2
22. Seite 23
Review
• Migration zu Jenkinsfiles
• Viele Wrapper-Scripte, um flexibel zu sein
• Verteiltes CI-Design erfordert ein Umdenken
• CI-Daten schwerer zugänglich
(Logs, Screenshots, Artifakte)
• Technologie-Mix
• Verteilte Dokumentation
(OpenShift, Jenkins, Jenkins-Plugins, Docker, …)
23. Seite 24
Review
• Skalierung übernimmt der Cluster
• "oc CLI client" anstatt Openshift-Jenkins-Plugin
• Parametrisierte YAML Templates für OpenShift
• Infrastractur as Code
• Neue Stages sind einfach zu erstellen
• Deployment wird automatisch mitgetestet
• Secrets durch Cluster-Admins verwaltbar
• Builds Steuerbar von CLI und UI