Daniel Tschan Technischer Leiter. Continuous Delivery mit OpenShift

Ähnliche Dokumente
Continuous Delivery mit OpenShift

Continuous Delivery mit OpenShift, 2nd Edition

Use AMW to deploy to OpenShift

Continuous Delivery in der Realität eines Großunternehmens

Build-Pipeline mit Jenkins

Platform as a Service (PaaS) & Containerization

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

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

Continuous Integration mit Jenkins

Continuous Delivery in der Praxis

Programmentwicklung ohne BlueJ

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Puzzle Tech Talk. Workshops Application Deployment in einer OpenStack Cloud

Continuous Database Integration mit Flyway

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Maven 2 Softwareprojekte mit Kultur

Core Solutions of Microsoft Exchange Server 2013 MOC 20341

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

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

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

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

Einreichung zum Call for Papers

Release Automation für Siebel

Microsoft Azure Fundamentals MOC 10979

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

Nathan Burgener. Design by Contract. Modul SWE

Continuous Delivery mit Docker

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Deploy von PHP-Applikationen

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

ECLIPSE PLUG-IN. Redwood Anwendertage 2015

Operation am offenen Herzen

Renée Bäcker. Perl $foo Magazin

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

ALM As-A-Service TFS zur hausinternen Cloud ausbauen

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Ablösung von Control-M durch JobScheduler

Große Übung Praktische Informatik 1

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

PostgreSQL in großen Installationen

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

Value Delivery and Customer Feedback

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

From Agile Project Management to Continuous Integration Thomas Bergmüller

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Produktionsfähige Applikationen

Build Management Tool

Oracle Database Backup Service - DR mit der Cloud

Continuous Integration

Installation & Konfiguration AddOn CopyObjects

Continuous Integration im medizinischen Bereich

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

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

Vorgehensweise bei der Installation Bob50SQL für einen unabhängigen PC.

Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012

Freelance DeltaPLC-Tool. Version 4 / Version 5

Unsere Webapplikation erweitern

[accantum] SAP Connector. Seite 1 (6) SAP Apps by ISC

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

vii Inhaltsverzeichnis 1 Cloud Computing 1

Varianten Handling in AUTOSAR

BartPE. Dokumentation. Projektarbeit Network Services. Dozent: Wolf-Fritz Riekert. Belmondo Kovac. Autor: Andreas Dinkelacker, 3.

Bekannte Tools in einem agilen Ansatz. Frank Schwichtenberg SourceTalkTage 2013 Göttingen,

Mobile-Szenario in der Integrationskomponente einrichten

Javakurs zu Informatik I. Henning Heitkötter

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

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Remote Access Service (RAS) für iphone und ipad

Einführung in Subversion. Tutorium SWP

Android Testautomatisierung mit dem Framework Robotium

Von SVN zu Git. Daniel Willmann cbna

Bes 10 Für ios und Android

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

DevOps in der Praxis. Alexander Pacnik

Einführung in Git. Dirk Deimeke. 19. August My own IT. ddeimeke (My own IT) Einführung in Git 19. August / 23

Erfahrungsbreicht... Von der Auswahl bis zur Verwendung von Contour im Grossunternehmen.

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

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

tricerat Simplify Value Package

Agile Software Verteilung

Python SVN-Revision 12

Referenzielle Integrität SQL

IBM SPSS Modeler Entity Analytics - Erweiterte Konfiguration

Application Lifecycle Management mittels Polarion und custom Plug-Ins

Remote Method Invocation

MailUtilities: Remote Deployment - Einführung

Datensicherung an der Universität Bern Tivoli Storage Manager

Timer-Dienst (070212)

Dokumentieren mit Eclipse und Doxygen

Algorithmen und Datenstrukturen

Branching und Merging mit Visual Studio Team System

Open Source als de-facto Standard bei Swisscom Cloud Services

Transkript:

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

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 Delivery Möglichst identische Umgebungen Ein Artifakt für alle Umgebungen Eindeutige Versionsnummer Vollautomatisiertes Deployment auf Knopfdruck Environment Detection DB Management Tool/Migrationsskripte

Warum Continuous Delivery? Fehlerquellen eliminieren Effizienz steigern Mehr Flexibilität Kürzere Feedbackzyklen Verstärkte Zusammenarbeit

Continuous Delivery Implementation Database Stack + App Jenkins App

Möglichst identische Umgebungen DEV INT STG PRD dedicated

Ein Artifakt für alle Umgebungen Gewöhnlicher Build Job auf Puzzle Jenkins Server Post Steps: Execute Shell pod create kitchensink kitchensink/target/*.war Post-build Actions: archive the artifactes: deployment.tar.gz pod = Puzzle OpenShift Deploy

Was macht pod create? 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}

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 POD_NAMESPACE_dev=dtschan export POD_APP_dev=kitchensinkd export POD_NAMESPACE_int=dtschan export POD_APP_int=kitchensinki export POD_ENV_int="JVM_PERMGEN_RATIO=0.3" pod deploy $env

Was macht pod deploy? eval ns=\$pod_namespace_$1 eval app=\$pod_app_$1 eval env=\$pod_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

Was macht pod deploy? eval ns=\$pod_namespace_$1 eval app=\$pod_app_$1 eval env=\$pod_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

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 @Startup @Singleton @TransactionManagement(TransactionManagementType.BEAN) public class ExecuteLiquibase { @Resource(lookup = "java:ourdatasource") DataSource datasource; @PostConstruct public void onstartup() throws LiquibaseException { Liquibase liquibase = null; Connection connection = null; try { connection = datasource.getconnection(); Database database = DatabaseFactory.getInstance(). findcorrectdatabaseimplementation( new JdbcConnection(connection));

Liquibase Integration } } liquibase = new Liquibase("/db.changelog.xml", new ClassLoaderResourceAccessor(), database); liquibase.update((string) null); } catch (SQLException e) { throw new DatabaseException(e); } finally { try { connection.rollback(); connection.close(); } catch (SQLException e) { throw new LiquibaseException(e); } }

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 OpenShiftBestPractices StackOverflow: Deploy Specific Build With Jenkins

Q & A