Continuous Delivery mit OpenShift



Ähnliche Dokumente
Daniel Tschan Technischer Leiter. Continuous Delivery mit OpenShift

Continuous Delivery mit OpenShift, 2nd Edition

Use AMW to deploy to OpenShift

Platform as a Service (PaaS) & Containerization

Continuous Delivery in der Realität eines Großunternehmens

Build-Pipeline mit Jenkins

Continuous Integration mit Jenkins

Continuous Database Integration mit Flyway

Puzzle Tech Talk. Workshops Application Deployment in einer OpenStack Cloud

OpenShift Tech Lab. Daniel Tschan CTO. Anselm Strauss Senior System Engineer

End-to-End Automatisierung Mehr als Continuous Integration & Continuous Delivery

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

Continuous Delivery in der Praxis

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Cloud-Provider im Vergleich. Markus

Microsoft Azure Fundamentals MOC 10979

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Maven 2 Softwareprojekte mit Kultur

Erfolgreicher Ums9eg auf Git

Deploy von PHP-Applikationen

Programmentwicklung ohne BlueJ

Einreichung zum Call for Papers

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Oracle Database Backup Service - DR mit der Cloud

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Release Automation für Siebel

Rene Schneider GEBIT Solutions GmbH. Integrity - ein innovatives Tool zur Acceptance-Test-Automatisierung

Value Delivery and Customer Feedback

Python SVN-Revision 12

Serbest Hammade / Resh serbest.hammade@hammade.de. Do, 21. Juni 2012

ALM As-A-Service TFS zur hausinternen Cloud ausbauen

Freelance DeltaPLC-Tool. Version 4 / Version 5

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Möglichkeiten von Cloud Computing für Entwicklung und Test. Michael Eichenberger SBB Informatik Developer Day 10. Dezember 2013

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration

Konzept zur Push Notification/GCM für das LP System (vormals BDS System)

DevOps und Continuous Delivery. Von Release Automation bis zur Feedbackschleife. Matthias Zieger codecentric AG

Continuous Delivery mit Docker

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

SharePoint Continuous Integration mit TFS Online & Azure VMs Torsten Mandelkow Christian Pappert Microsoft

SINT Rest App Documentation

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

Betriebshandbuch. MyInTouch Import Tool

Versionsverwaltung mit SVN

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Renée Bäcker. Perl $foo Magazin

Von SVN zu Git. Daniel Willmann cbna

Platform as a Service (PaaS) Prof. Dr. Ch. Reich

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

ECLIPSE PLUG-IN. Redwood Anwendertage 2015

Hacking-Lab Online Hack&Learn 9. December 2008

Continuous Integration im medizinischen Bereich

Automatisiertes End-to-end Testen von Enterprise Applikationen

Open Source als de-facto Standard bei Swisscom Cloud Services

Automatisierte Akzeptanztests für ios-apps. Sven Günther it-agile GmbH

DevOps. Alexander Pacnik, Head of DevOps Engineering

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Verbinden von IBM Informix mit Openoffice mittels JDBC

Core Solutions of Microsoft Exchange Server 2013 MOC 20341

Virtual Unified Environments Infrastructure Service Installation und Lifecycle im Oracle Produktumfeld

Build Management Tool

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Die Erkenntnis von gestern muss heute mit einem neuen TEAM - Ihr Partner für IT 2

SQL Azure Technischer Überblick. Steffen Krause Technical Evangelist Microsoft Deutschland GmbH

Android Testautomatisierung mit dem Framework Robotium

NoSQL mit Postgres 15. Juni 2015

Panagon Capture 3.0 Dokumentation

THEMA: SAS ADMINISTRATION LEICHT GEMACHT MIT SAS 9.4 ALLE SYSTEME IM BLICK" ANKE FLEISCHER

JBoss AS 7. Installation, Konfiguration und Betrieb. Alexander Pacnik Karlsruhe,

Migration Howto. Inhaltsverzeichnis

Seite Out-Of-Band-Authentifizierung (OOBA) 8.1 Einleitung

Android-Testautomatisierung mit Robotium

Continuous Integration

Application Lifecycle Management mittels Polarion und custom Plug-Ins

CI mit Forms im Weblogic Umfeld: CI mit Forms geht das

MailUtilities: Remote Deployment - Einführung

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Enterprise java beans step-by-step

Konfiguration Management System. Konfiguration Management System. Versionierung Parallele Entwicklung Workspace

Zend PHP Cloud Application Platform

IT Engineering Continuous Delivery. Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet. Alexander Pacnik Karlsruhe,

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

Embedded So)ware. Einrichten der Arbeitsumgebung

From Agile Project Management to Continuous Integration Thomas Bergmüller

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Ablösung von Control-M durch JobScheduler

Transkript:

Daniel Tschan Technischer Leiter Continuous Delivery mit OpenShift Puzzle Tech Talk, Bern, 23.10.2014

1 Grundlagen

Kleine Geschichte «Integration Hell» und «Works on My Machine» 1991: Object Oriented Design: With Applications 1999: Extreme Programming Explained 2001: CruiseControl 2005: Hudson 2010: Continuous Delivery

Voraussetzungen Agiler Entwicklungsprozess Continuous Integration

Continuous Integration Versionsverwaltung für Quelltext Automatisiertes kompilieren jeder Codeversion Tests automatisch ausführen, auf prod. Stack Häufiges einchecken/integrieren Automatisches Reporting Automatisches Deployment auf Integration

Warum Continuous Delivery? Continuous Integration weiterentwickeln Fehlerquellen eliminieren Effizienz steigern Flexibilität erhöhen Feedbackzyklen verkürzen Zusammenarbeit verstärken

Continuous Delivery Möglichst identische Umgebungen Ein Artifakt für alle Umgebungen Eindeutige Versionsnummer Vollautomatisiertes Deployment auf Knopfdruck Environment Detection DB Management Tool/Migrationsskripte

OpenShift Platform as a Service (PaaS) Produkt von Red Hat Public oder private cloud Softwarestacks auf Knopfdruck Java, Ruby, JavaScript, Python, PHP,.NET,... 3 Applikationen gratis hosten auf openshift.com

Liquibase Versioniert die Datenbank Bestimmt die auszuführenden Migrationsskripte Führt diese in korrekter Reihenfolge aus

2 Umsetzung bei Puzzle

Umsetzungsbeispiel mit Java EE Database Stack + App Jenkins App

Identische Umgebungen DEV INT STG PRD dedicated

Ein Artifakt Gewöhnlicher Build Job auf Puzzle Jenkins Server Post Steps: Execute Shell pot tar kitchensink kitchensink/target/*.war Post-build Actions: archive the artifactes: deployment.tar.gz pot = Puzzle OpenShift Tool

Eindeutige Versionsnummer Jenkins Buildnummer: $BUILD_NUMBER Maven Build Number Plugin git rev-list HEAD wc -l

Automatisiertes Deployment Free-Style Deploy Job auf Puzzle Jenkins Server This build is parametrized: Choice Parameter: env Build Selector for Copy Artifact: BUILD_SELECTOR Build: Copy artifacts from another project Project name: Name des Build Jobs Which build: Specified by a build parameter: BUILD_SELECTOR Artifacts to copy: deployment.tar.gz

Automatisiertes Deployment Build: Execute Shell export POT_NAMESPACE_dev=dtschan export POT_APP_dev=kitchensinkd export POT_NAMESPACE_int=dtschan export POT_APP_int=kitchensinki export POT_ENV_int="JVM_PERMGEN_RATIO=0.3" pot deploy $env

Deployen auf Knopfdruck Promoted Builds Plugin Auf Knopfdruck Build X auf Umgebung Y deployen Parametrized Trigger Plugin X und Y an Deploy Job übergeben Copy Artifact Plugin Deployment Artifakt von Build nach Deploy Job kopieren

Deployen auf Knopfdruck Promotion Plugin im Build Job konfigurieren Actions: Trigger/call builds on other projects Projects to build: Name des Deploy Jobs Predefined parameters: env=dev (oder int/stg/prd) BUILD_SELECTOR= <SpecificBuildSelector> <buildnumber>$promoted_number</buildnumber> </SpecificBuildSelector>

Puzzle ITC GmbH www.puzzle.ch

Environment Detection Umgebungsspezifische Konfiguration über Umgebungsvariabeln: DNS Name Datenbankverbindungsdaten Daten-/Logverzeichnisse

Environment Detection Umgebungsvariabeln setzen: Automatisch durch OpenShift rhc env set (automatisieren!)

DB Change Management Liquibase ist Teil des Deployments Alle Liquibase Change Sets sind Teil des Deployments Applikation führt bei Start Liquibase aus Liquibase führt Change Sets aufgrund des Datenbankstandes aus

Liquibase Integration public class LiquibaseProducer { @Resource(lookup = "java:ourdatasource") DataSource datasource; @Produces @LiquibaseType public CDILiquibaseConfig createconfig() { CDILiquibaseConfig config = new CDILiquibaseConfig(); config.setchangelog("/db.changelog.xml"); return config; }

Liquibase Integration @Produces @LiquibaseType public DataSource createdatasource() throws SQLException { public datasource; } } @Produces @LiquibaseType public ResourceAccessor create() { public public ClassLoaderResourceAccessor( getclass().getclassloader()); }

Warum Liquibase in der App? Applikationsartefakt von Umgebung unabhängig Applikation und DB sind immer kompatibel Datenbankverbindung gegeben Unterstützt Cluster und Cloud Deployments

Warum nicht OpenShift Jenkins? Verletzt ein «Artefakt für alle Umgebungen» Schwer zu warten: custom build script in jedem Job Ressourcen beschränkt Maven Version hardcoded

Nächste Schritte OpenShift Umgebungsvariabeln zentral verwalten Integration von Artifactory in Prozess OpenShift auf green.ch OpenStack FlexCloud Weiterentwickeln Prozess für OpenShift Scalable Apps

Referenzen Continuous Delivery OpenShift User Guide Puzzle OpenShift Tool Liquibase Documentation StackOverflow: Deploy Specific Build With Jenkins

Q & A

15 Jahre Puzzle ITC Jubiläums Tech Talk 22. Oktober 2015 Save The Date

DDL vs DML Aus fachlicher Sicht identisch: DROP TABLE table DELETE FROM table

Was macht pot tar? rm -rf ${work} mkdir -p ${work}/build_dependencies ${work}/dependencies/jbosseap/deployments ${work}/repo/.openshift cp "$@" ${work}/dependencies/jbosseap/deployments rsync -avc "${openshift_config_dir}"/.openshift/ ${work}/repo/.openshift/ ( cd ${work} && GZIP=-9 tar cvfz../deployment.tar.gz. ) rm -rf ${work}

Was macht pot deploy? eval ns=\$pot_namespace_$1 eval app=\$pot_app_$1 eval env=\$pot_env_$1 if [ "$env" ]; then rhc -n$ns -a$app env set $env fi rhc -n$ns -a$app app configure --deployment-type binary rhc -n$ns -a$app app deploy deployment.tar.gz