Continuous Automated Deployment with

Similar documents
Modularity in the cloud. A case study

Lessons learned from a large scale OSGi web app. Jago de Vreede Paul Bakker

Building a Modular Server Platform with OSGi. Dileepa Jayakody Software Engineer SSWSO2 Inc.

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Mastering Continuous Integration with Jenkins

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

Continuous Integration with Roundtable TSMS

Hudson configuration manual

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

Build management & Continuous integration. with Maven & Hudson

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Meister Going Beyond Maven

Continuous Integration

Developer s Guide. How to Develop a Communiqué Digital Asset Management Solution

Server-side OSGi with Apache Sling. Felix Meschberger Day Management AG 124

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Managing your Red Hat Enterprise Linux guests with RHN Satellite

Building, testing and deploying mobile apps with Jenkins & friends

Content. Development Tools 2(63)

DevOps. Building a Continuous Delivery Pipeline

Enabling Continuous Delivery for Java Projects with Oracle Cloud Services (Oracle PaaS) Siva Rama Krishna Oracle India

Developing modular Java applications

Introduction to OSGi and Modularity. InfoSphere MDM, Version 11.x Dany Drouin, Senior Software Engineer MDM

Sonatype CLM for Maven. Sonatype CLM for Maven

ALERT installation setup

Continuous Integration: Put it at the heart of your development

Equinox Framework: A Happier OSGi R6 Implementation

DevOps Course Content

SOA Software: Troubleshooting Guide for WebSphere Application Server Agent

Continuous Integration and Delivery at NSIDC

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

OpenShift Enterprise PaaS by Red Hat. Andrey Markelov RHCA Red Hat, Presales Solution Architect

CI/CD Cheatsheet. Lars Fabian Tuchel Date: 18.March 2014 DOC:

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

HP ALM11 & MS VS/TFS2010

IRF2000 IWL3000 SRC1000 Application Note - Develop your own Apps with OSGi - getting started

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Building a Continuous Integration Pipeline with Docker

Continuous Integration The Full Monty Artifactory and Gradle. Yoav Landman & Frederic Simon

Sparx Systems Enterprise Architect Cloud-based repository hosting

Jenkins on Windows with StreamBase

Operations and Monitoring with Spring

Continuous Integration

D5.4.4 Integrated SemaGrow Stack API components

Jenkins Slave Cloud with Apache Mesos. Klaus Azesberger Reinhard Kiesswetter Infonova GmbH

NextRow - AEM Training Program Course Catalog

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Version Control Your Jenkins Jobs with Jenkins Job Builder

This module explains the Microsoft Dynamics NAV architecture and its core components.

HADOOP BIG DATA DEVELOPER TRAINING AGENDA

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

Continuous integration with Jenkins CI

DELIVERABLE. Europeana Cloud: Unlocking Europe s Research via The Cloud. Deliverable D2.1 Development Environment

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

@jenkinsconf. Maintaining huge Jenkins clusters - Have we reached the limit of Jenkins?

About Me. Software Architect with ShapeBlue Specialise in. 3 rd party integrations and features in CloudStack

Nuxeo, an open source platform for content-centric business applications. Stéfane Fermigier, Nuxeo Laurent Doguin, Nuxeo

Jenkins: The Definitive Guide

Integration in the cloud - IPaaS with Fuse technology. Charles Moulliard Apache Committer

Installing and Administering VMware vsphere Update Manager

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Apache Sling A REST-based Web Application Framework Carsten Ziegeler cziegeler@apache.org ApacheCon NA 2014

Enterprise Service Bus

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Hudson Continous Integration Server. Stefan Saasen,

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Simple and powerful site deployment with capistrano

How To Write A Continuous Delivery

Release Automation for Siebel

Maven 3 New Features. Stefan Scheidt Solution Architect OPITZ CONSULTING GmbH

The Benefits of Utilizing a Repository Manager

Maven or how to automate java builds, tests and version management with open source tools

Improving your Drupal Development workflow with Continuous Integration

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Oracle Data Integrator 12c: Integration and Administration

Urbancode Deploy Overview

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

INCREASE YOUR WEBMETHODS ROI WITH AUTOMATED TESTING. Copyright 2015 CloudGen, LLC

Leveraging Ambari to Build Comprehensive Management UIs For Your Hadoop Applications. by Christian

Continuous Integration (CI)

Automated build service to facilitate Continuous Delivery

Pro/INTRALINK Curriculum Guide

Eclipse 4 RCP application Development COURSE OUTLINE

LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training

Team Collaboration, Version Management, Audit Trails

Creating an application with the Virgo Web Server

Developing Plugins for Cloud Scale

ITG Software Engineering

Continuous Integration. CSC 440: Software Engineering Slide #1

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Transcription:

Continuous Automated Deployment with

Who are we Jan Willem Janssen Software Architect at Luminis Technologies committer and PMC member of Apache ACE @j_w_janssen Marcel Offermans Director at Luminis Technologies Member at the Apache Software Foundation @m4rr5

Agenda Traditional Continuous Integration From EAR to bundles Versioning and baselining ACE basics Build env. setup with ACE Demo

Typical CI workflow without OSGi and ACE? Maven,! scp, ftp, nfs, smb, (D)VCS CI EAR/WAR Target

Monolithic to Modular Single, big, monolithic application Versioned whenever something changes On every change the whole application has to be redeployed Many, small modules that can be combined to form applications Modules versioned independently Only modules that changed need to be redeployed

What to version? Bundles So we know their contents has changed Exported Packages So we know the interface contract has changed our focus here is on bundle versions, because they tell us what to update

Semantic Versioning tells us what has changed 1.0.0.abc major.minor.micro(.qualifier) Major: Backward incompatible change! Minor: Backward compatible change! Micro: Implementation change! Qualifier: Label, e.g. build number

Baselining Compares build with latest release Checks if version numbers should be bumped Uses byte code analysis Eclipse with Bndtools - baseline: * - removeheaders: Bnd- LastModified,Tool,Created- By

Baselining Bnd annotations @ProviderType A type that is provided by the implementor of the contract. @ConsumerType A type that is typically implemented by the consumer of the contract.

Eclipse with Bndtools demo

Apache ACE Software distribution framework Manage installation/upgrade of targets bundles configurations etc

ACE basics target management. agent client provisioning. server network target management. agent target component. repository management. agent

ACE basics group artifacts into features and distributions to make them manageable IKEA catalogue Store&Repository License'Repository Ar-fact Feature Distribu-on Distribu1on Target

Organising artifacts Ar#fact Ar#fact Ar#fact Ar#fact Ar#fact Ar#fact Feature Feature Feature Feature Distribu#on Distribu#on Target Target Target Target Target

Apache ACE demo

CI workflow with OSGi & ACE (D)VCS CI Bundles OBR ACE Target Releases Snapshots

Build env. with ACE Releases Bundles from Snapshots build

Versioning bundles from a build Assume only bundle A changed since the release Workspace 1.0.1.SNAPSHOT Snapshot Repository > 1.0.1 Release Repository even though they have the A 1.0.1.SNAPSHOT A 1.0.1.SNAPSHOT A 1.0.0 B 1.0.1.SNAPSHOT same version, not all snapshots are equal B 1.0.1.SNAPSHOT B 1.0.0 even if nothing changed, C 1.0.1.SNAPSHOT you still end C 1.0.1.SNAPSHOT up with a new C 1.0.0 snapshot bundle

Versioning bundles from a build Assume only bundle A changed since the release Workspace 1.0.1.20131022 Snapshot Repository > 1.0.1 Release Repository even though they have a A 1.0.1.20131023 A 1.0.1.20131024 A 1.0.0 B 1.0.1.20131023 different version, they might still be equal B 1.0.1.20131024 B 1.0.0 even if nothing changed, C 1.0.1.20131023 you still end C 1.0.1.20131024 up with a new C 1.0.0 bundle

Versioning bundles from a build Assume only bundle A changed since the release Workspace 1.0.0.CDS001 Snapshot Repository < 1.0.1 Release Repository A 1.0.1 B 1.0.0 A 1.0.0.CDS001 the bundle gets a new qualifier if it has changed B 1.0.0 A 1.0.0 B 1.0.0 C 1.0.0 if nothing changed, nothing C 1.0.0 new is deployed C 1.0.0

What do we need? CI! Script that places bundles in the OBR ACE Server with snapshot and release OBR Target! Management agent configured to the ACE instance

GoGo shell Standard OSGi shell (RFC-147) Powerful and extensible Available from Apache Felix ACE provides commands to interact with its client API and OBRs

Script Setup echo Define repositories sourceindex = (repo:index../release) sourcerepo = (repo:repo R5 $sourceindex) targetrepo = (repo:repo OBR "http://localhost:8084/obr/repository.xml") releaserepo = (repo:repo OBR "http://localhost:8083/obr/repository.xml")! echo "Deploying bundles" deployed = repo:cd $releaserepo $sourcerepo $targetrepo! echo "Create workspace" workspace = (ace:cw)! echo "For each bundle" each $deployed { echo "Get metadata from bundle" identity = $it getidentity version = $it getversion name = "$identity - $version" url = $it geturl mimetype = $it getmimetype echo "Bundle exists?" yes Define repositories Deploy bundles Create workspace For each bundle next bundle Get metadata from bundle Bundle done

! echo "For each bundle" each $deployed { echo "Get metadata from bundle" identity = $it getidentity version = $it getversion name = "$identity - $version" url = $it geturl mimetype = $it getmimetype echo "Bundle exists?" if { (coll:first ($workspace la "(&(Bundle-SymbolicName=$identity) (Bundle-Version=$version))")) } { echo "$name already exists" } { echo "Create artifact for bundle" $workspace ca [ artifactname="$name" url="$url" mimetype="$mimetype" Bundle-SymbolicName="$identity" Bundle-Version="$version" ] } }! echo "Commit workspace" $workspace commit exit 0 yes For each bundle next bundle Get metadata from bundle Bundle exists? Create artifact for bundle Commit workspace Quit no done

Example Amdatu showcase in local git repo post- commit or post- receive hook Jenkins post build step to deploy to ACE ACE deploys artifacts to targets

Demo With the Amdatu Showcase (extended) demo

Provisioning Server! /! rg.o e h c a p.a e c /a :/ p htt That s us! http://luminis.eu/ Cloud OSGi services! http://www.amdatu.org/ Eclipse OSGi plugin! http://bndtools.org/! Demo code! bitbucket.org/amdatu/showcase/

Merci Mahalo Dank U Danke Grazie Takk Obrigado Gracias Thank! you