Automatisk build og deploy med Maven. Geek Night hos VP SECURITIES - 26. januar 2011 Mads Pultz <mpz@trifork.com>

Relaterede dokumenter
Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

Curriculum Vitae Jack Petersen

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

OS2 Opgavefordeler. Løsningsbeskrivelse Version 2. Udarbejdet af Miracle A/S Simon Møgelvang Bang

IT-Basecamp Real World Java EE Patterns Adam Bien. Real World Java EE Patterns, Adam Bien Copyright Lund&Bendsen A/S

Buildvejledning (Release, patch og testversion)

Curriculum Vitae PETER VILLADSEN MOBIL: RAVNSBORGVEJ 91 DK-4600 KØGE

Standardiseret tilgang til Software Asset Management. ISACA Medlemsmøde 2013 Jan Øberg ØBERG Partners

APEX i Praksis Martin B. Nielsen. Navn. MBNDATA Emne

Introduktion til versionsstyring

Escape velocity: Slashing deployment times with Docker

Erhvervserfaring Senior IT Specialist, IBM Systemudvikler, Dan Net Systemudvikler, KMD

Arkitektur for begyndere

Applikations Virtualisering. Anders Keis Hansen

KIH Database. Systemdokumentation for KIH Databasen. 1. maj Side 1 af 13

The LEGO Journey: Building an agile test foundation one brick at the time. Casper Gaardland Englund. Stephan Hjelmdal Nielsen The LEGO Group l

Procedurer for styring af softwarearkitektur og koordinering af udvikling

OpenTele datamonitoreringsplatform

Succesfuld implementering af automatiseret test

DAXIF# - Delegate Automated Xrm Installation Framework. Delegate A/S

10. Rapporter i BBR... 2

e-tl System til System kommunikationstest

SAS Forum 2012 Den virtuelle operatør

Curriculum Vitae for Søren Brønsted

10. Rapporter i BBR... 2

STS Designdokument. STS Designdokument

SOSI STS Dokumentationsoverblik

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services

Microservices. Hvad er det og hvordan kommer du i gang?

Netværksværktøj til BUPL s medlemmer. Mikkel Flindt Heisterberg, IntraVision Brian Andersen, BUPL

Certificate Revocation Authority. Certificate Revocation Authority

Ud af krisen. Software på tværs, 15. juni 2009

Thomas Vedel, Vedel Consult DAPUG erfamøde 10. november Installation af SubVersion (svn)

TeamShare 2.1 Versionsnoter Oktober 2009

Fujitsu Siemens Computer

SYSTEMDOKUMENTATION AF POC

Struktureret Test og Værktøjer Appendiks til bogen Struktureret Test

Development environments made easy

Integration af SAS Business Intelligence i kundeorienteret internetportal

ProjectWise Workflow Rules Engine

SAS USER FORUM DENMARK 2017 USER FORUM. Rune Nordtorp

CV for Christian Plougmann Hag

OrCAD Capture TCL IDE med Eclipse

Indholdsfortegnelse. Systembeskrivelse Rapporter

MSI pakke til distribution af AutoPilot komponenter.

TIA-portalen V13 Engineeringværktøjet, som gør det mere effektivt

Branchens perspektiv på den gode indkøbs organisation. En måling er bedre end 100 mavefornemmelser. Per Hartlev

Web services i brug. Anvendelse uden for biblioteksverdenen

PID2000 Archive Service

EasyIQ ConnectAnywhere Release note

KURSER INDENFOR SOA, WEB SERVICES OG SEMANTIC WEB

MES. GOSystems et agilt MES-koncept. (+45)

Branchens perspektiv på den gode indkøbs organisation. En måling er bedre end 100 mavefornemmelser. Per Hartlev

STS Designdokument. STS Designdokument

DAXIF# - Delegate Automated Xrm Installation Framework

LotusPhere comes to you IM Agent Manager - IM Support - Sametime / 27 Tobias Fonsmark -

Forskellige Java versioner

Koncept for systemforvaltning af den fælles open source kode, herunder procedure for opfølgning på software-versioner af OpenTele

Cloud i brug. Migrering af Digitalisér.dk til cloud computing infrastruktur

Løsningsbeskrivelse. Den fælleskommunale Serviceplatform

APPLIKATIONSARKITEKTUR ERP INFRASTRUKTUR. EG Copyright

InfoPro 2i. Profil Softwarefirmaet MaCom A/S blev etableret i Vi udvikler og markedsfører dokumenthåndteringssystemet InfoPro.

Oneview: Driftsdokumentation

OS2MO 2.0 Fugl Fønix

Alex Ø. T. Hansen UDDANNELSE PERSONLIGHED ERFARING TEKNOLOGIER. IT-Konsulent. System Administrator

edrift - Installationsvejledning edrift i version NET Open Source

Vindmøller og Software Erik Kragh Dalskov Software Configuration Administrator IBM Corporation

Sundhed.dk og apps. Tobias Uldall-Espersen IT-Arkitekt, sundhed.dk

edgemo SOFT2go Kristian F. Thomsen

KIH Database. Systemdokumentation for KIH Databasen. 12. september Side 1 af 20

Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder.

Installation og Drift. Aplanner for Windows Systemer Version 8.15

ANALYSE AF SIKKERHEDSSTANDARDER OG -LØSNINGER

Intro Denne vejledning beskriver proceduren for at opdatere en kørende UMS version til seneste version.

Installation og opsætning af EjdExplorer 2.4

Filr: Næste generation af Fildeling. Flemming Steensgaard

Agil test tilgang - erfaringer fra projekter

GetOrganized. Realisér store forretningsgevinster og besparelsespotentiale ved at organisere dit og dine kollegaers arbejde.

Opdatering af ISOWARE til version 6.1.0

Installation af DATABOKS online backup manager

DOKUMENTBROKER Koncept

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Revideret projektplan til 1. marts bliver formentlig i stikord, men her følger opsatte milepæle:

LUDUS WEB. Installations- og konfigurations-vejledning. Den 7. april J.nr.: 4004 V

Nasjonal arkitektur Danske erfaringer. difi.no/arkitektur Klaus Vilstrup Pedersen

Visual Studio Team System. Team Build en grundpille i søgen efter it-projektproduktivitet?

Installation og Drift. Aplanner for Windows Systemer Version

Dynamic Line Management Branchemøde d. 3 september september 2014 Torben Weihe Dam

Model Drevet Design i Praksis

ASPECT4 og webben. v. Simon Iversen, Brian Siim Andersen, Peter Vindstrup

OFFENTLIGT KMD A/S EJ 0.0 NUMMERERET SLIDE 1 CCM USER GROUP KMD einvoicing. v/ Ole Sixhøi

Bedrebolig.htk.dk. Beskrivelse af version juni 2015

GIS Is Advancing Rapidly Integrating and Leveraging Many Innovations

Leverandør informationsmøde 25. marts 2014

GRAFISK WORKFLOW REDESIGN AF HJEMMESIDE

Styring af testmiljøer almindelig god praksis

It arkitektur- og sikkerhedskrav Løn og personalesystemsudbud. Region Midtjylland 2010.

LUDUS Web Installations- og konfigurationsvejledning

Bilag til BBR- review

Transkript:

Automatisk build og deploy med Maven Geek Night hos VP SECURITIES - 26. januar 2011 Mads Pultz <mpz@trifork.com> 1

Agenda Introduktion til case (kontekst) Byg demoer - Bamboo, Nexus og RAD Modulopbygning IDE integration Release procedure Deploy demo - VPDeploy Arkitektur Tests Sameksistens med forretningsdrevede projekter Forankring 2

Lidt om mig selv... Datalog fra DIKU 13+ års erfaring med softwareudvikling (primært Java) Stiftede bekendtskab med Maven første gang i 2005 Idémand og arkitekt bag Løs Kobling projektet hos VP som danner rammen om denne case Oktober 2008 Juni 2009 3

Hvor var vi? (apps) Portefølge på ca. 20 applikationer og fælles komponenter <25 udviklere Klassisk J2EE på Websphere og RAD JSP/Servlets, EJB 2, Struts 1, Hibernate, JAX-RPC Spring, EJB 3, JPA, REST Største delen af applikationerne er frontends til mainframen. De få rene decentrale løsning udgør dog den største kodebase Alle applikationer og fælles komponenter har en ensartet arkitektur Snitflader mellem applikationer udstilles via et Java interface (jar med stubs EJB eller JAX-RPC) 4

Hvor var vi? (B&D) Et stort centralt Ant byg! Alle afhængigheder blev bygget Indbefattede både byg og deploy Miljøspecifikt RAD'ens integration til Websphere bliver brugt så RAD'ens byg skulle også sættes op. Udvikler workspaces indeholdte alle afhængigheder 5

Konsekvenser Der blev brugt meget tid på deployments til test, demo og prod ca. 45 minutter per deployment RAD'en er på hårdt arbejde når man har et workspace med 25+ projekter Error-prone procedure Ingen havde overblikket over hvordan sammenhængen og koblingen er mellem applikationer/komponenter Meget branching/merging samt koordinering af igangsætninger som reelt intet havde med hinanden at gøre 6

Hvor ville vi gerne hen? Få reduceret tid på byg og deploy betydeligt Byg det som er nødvendigt og ikke mere! Få reduceret ventetid på byg i RAD'en. Mindre source. Kortlægning af afhængigheder og styring af dem Opbygning af nye ensartede retningslinier og nyt rammeværk for projekter i organisationen Bibeholde funktionsadskillelse og ansvar hos M&A Forbedre muligheden for parallel udvikling Udvikling på HEAD Adskillelse af byg og deploy Miljøuafhængigt byg 7

Valg af teknologier Build værktøj: Maven Dependency Management Konventioner Nexus som Repository Manager Bygge server: Bamboo Lille POT viste at den bedst matchede vores ønsker (integration til AD et krav og vi havde Atlassian tools i forvejen) Deployment server: vi byggede vores egen Bamboo kunne ikke give os tilstrækkelig fleksibilitet og overblik 8

Maven without XML Værktøj til at styre et software projekts byg, rapportering og dokumentation Convention over configuration En klient del (pom.xml) life cycles plugins og goals dependency management En infrastruktur del repositories (e.g. Maven Central) managers (e.g. Nexus) 9

Nexus hos VP Nexus Maven Central Maven Central Maven MavenCentral Central thirdparty snapshots releases 10

Modulopbygning DEMO (RAD workspace) Vi bruger Eclipse projekt typerne EAR, WAR og JAR typisk bestod hver EAR af 1 stk. WEB og 2 stk. JAR Vi kunne 1-1 mappe et Eclipse projekt til et Maven modul Der opstod et nyt Eclipse projekt (myapp-projekt) som styrede Maven bygget for projektet 11

pom.xml hierarki coorporate-conventions myapp-project myapp-ear myapp-web myapp-business myapp-persistence 12

pom.xml hierarki coorporate-conventions <parent> myapp-project myapp-ear myapp-web myapp-business myapp-persistence 12

pom.xml hierarki coorporate-conventions <parent> myapp-project <parent> myapp-ear myapp-web myapp-business myapp-persistence 12

pom.xml hierarki coorporate-conventions <parent> myapp-project <modules> <parent> myapp-ear myapp-web myapp-business myapp-persistence 12

IDE integration eclipse:eclipse Maven plugin der genererer Eclipse filer (.project etc.) udfra pom.xml m2eclipse Eclipse plugin der gør det muligt at eksekverer Maven goals og at styre build path udfra pom.xml Vi bruger m2eclipse til at eksekverer Maven goals lidt versionsudfordringer da vi benytter RAD (Eclipse baseret) valgte at sætte build path op manuelt da produktet på daværende tidspunkt ikke var modent nok Vi har behov for EAR, JAR og WAR (skinny) support Har brugt eclipse:eclipse i startup fasen af projekter Eclipse filer under source control Generelt har vi kæmpet lidt med at få Maven til at følge Eclipsens flade projektstruktur 13

Topologi CVS/SVN Bamboo Nexus 14

Topologi CVS/SVN Bamboo Source udtræk Nexus Resolve dependencies og deploy artifakter 14

Topologi CVS/SVN Bamboo Nexus 14

Topologi CVS/SVN Bamboo Nexus TEST TEST TEST TEST DEMO PROD 14

Topologi CVS/SVN Bamboo Nexus TEST TEST TEST TEST DEMO VPDeploy PROD 14

Topologi CVS/SVN Bamboo Nexus TEST TEST TEST TEST DEMO Henter artifakter VPDeploy PROD 14

Topologi CVS/SVN Bamboo Henter miljøspecifikke parametre Nexus TEST TEST TEST TEST DEMO Henter artifakter VPDeploy PROD 14

Topologi CVS/SVN Bamboo Henter miljøspecifikke parametre Nexus Aktiver deploy (Maven Plugin/REST) TEST TEST TEST TEST DEMO Henter artifakter VPDeploy PROD 14

Atlassian Bamboo DEMO Konventioner per projekt som vi har opsat Min. et byg per branch som slutter af med at deploye til Nexus Et separat site byg med rapporter Hvert projekt administrerer selv sit byg Maven plugin til VPDeploy gør det muligt at lave deployments til TEST fra Bamboo 15

Nexus Mavens opfinder er bagmanden (Sonatype) Virkede som det mest seriøse bud i 1/2008 DEMO Konventioner som vi har opsat Det er kun Bamboo som kan deploye release artifakter til Nexus Artifakter i Releases kan ikke overskrives Source jar filer deployes også til Nexus (interne artifakter) Source jar filer downloaded også til Nexus (eksterne artifakter) 16

Branching og merging (før) Produktionsspor Ny forretningsfunktionalitet S T U V HEAD 17

Branching og merging (mål) Ny forretningsfunktionalitet Hasterettelser T U S V HEAD 18

Sameksistens Produktionsspor Omlægning til Maven Ny forretningsfunktionalitet HEAD 19

Release procedure Definition: deployment af RELEASE artifakt til Nexus Eksperimenterede med Maven Release plugin et Det fungerede ikke i Eclipsens flade struktur For komplekst? Manuel inkrementering af versionsnumre og tagging/branching Versions Maven Plugin VP: Har det været for error-prone? 20

VPDeploy Inspireret af Bamboo s domæne model DEMO 21

VPDeploy Inspireret af Bamboo s domæne model Deployment DEMO 21

VPDeploy Inspireret af Bamboo s domæne model Deployment Plan DEMO 21

VPDeploy Inspireret af Bamboo s domæne model Deployment VPO Plan DEMO 21

VPDeploy Inspireret af Bamboo s domæne model Deployment VPO Plan Environment DEMO 21

VPDeploy Inspireret af Bamboo s domæne model Deployment VPO funk1 Plan Environment DEMO 21

VPDeploy Inspireret af Bamboo s domæne model Deployment Artifakt VPO funk1 Mapning af mulige deployments Plan Environment DEMO 21

VPDeploy Inspireret af Bamboo s domæne model dk.vp.ros:vpros-ear:3.0 Deployment Artifakt VPO funk1 Mapning af mulige deployments Plan Environment DEMO 21

VPDeploy arkitektur In Container Standalone (maven plugin) vpdeploy-web vpdeploy-ws vpdeploy-plugin vpdeploy-business vpdeploy-persistence Baseret på Chain of Responsibility pattern 22

<bean name="fetchartifactscmd" class="dk.vp...commands.fetchartifactscommand" /> <bean name="webspheredeploymentcmd" class="dk.vp...webspheredeploymentcommand">... <property name="adminclientfactory" ref="adminclientfactory" /> </bean> <bean name="vpodeployplan" class="org.apache.commons.chain.impl.chainbase"> <constructor-arg> <list>!! <ref bean="fetchartifactscmd" />!!! <ref bean="fetchenvironmentpropertiessvncmd" />!!! <ref bean="environmentbinarysemaphorecmd"/>!!! <ref bean="configdeploymentcmd" />!!! <ref bean="webspheredeploymentcmd" />!!! <ref bean="restartwasinstancescmd" />!! </list>! </constructor-arg> </bean> <bean name="fxpdeployplan" class="org.apache.commons.chain.impl.chainbase"> <constructor-arg> <list> <ref bean="fetchartifactscmd" /> <ref bean="environmentbinarysemaphorecmd"/> <ref bean="webspheredeploymentcmd" /> <ref bean="restartwasinstancescmd" />!! </list>! </constructor-arg> </bean> 23

VPDeploy Maven Plugin mvn vpdeploy:deploy -Dartifacts=dk.vp.ros:vpros:3.0 -Dplan=VPO -Denvironment=funk1... Tilsvarende deploy-local goal som giver udviklere mulighed for at holde deres lokale Websphere installation opdateret Beskrivelse på internt Maven Site 24

Sporbarhed Revisionskrav (spor fra prod til source) LDAP integration (SVN, Bamboo, VPDeploy) (Alle) OpenSource frameworks bliver hentet via Nexus (logget, checksum, inkl. source) Bamboo Integration til Fisheye (og JIRA) VPDeploy Integration til Nexus Log over alle deployments til test og prod 25

Tests! Hvad kunne vi gøre på build niveau? De unit tests vi havde blev nu en del af Maven bygget Sammenligning af artifakter Binær diff gav ikke mening Manuel sammenligning af EAR filer godt hjulpet på vej af værktøj til sammenligning af filer/kataloger Jar filer Maven genererede filer (application.xml) Hvad skulle testes på runtime? Systemgrænseflader Manuelle web tests Automatiske web tests med RFT 26

Forankring Forank... hvad for noget? Sikre at vi (M&A afdelingen)... kom med noget som løste nogle af de dagligdagsudfordringer som udviklerne sad med at få uddannet folk i at benytte det nye system Vi lavede en trinvis implementation Forbrænder ifm. nyt projekt delagtiggjorde brugerne af systemet så tidligt som muligt i processen 27

Trinvis implementering (1) 2. halvår 2008: Forbrænder hvor vi på et nyt projekt indførte Maven Etablering af Nexus infrastruktur Etablering af parent POM (corporate Maven conventions) Etablering af Maven byg for nogle få fælles komponenter Opbygning af viden! Feedback! Workshop med ekstern indspark (Trifork) hvor vi modnede konceptet 11/08 06/09: Omlægning af vp.online ca. 100 Maven moduler Etablering af byggeserver (Bamboo) 02/09: 2 ugers periode hvor 3-4 udviklere afprøvede Maven bygget (RAD, Bamboo, Nexus) og hjalp til med at justere bygget til (unit tests) Udvikling af deployment server Opstart på omlægning af FundingXpert ca. 50 Maven moduler med en helt anden arkitektur 28

Trinvis implementering (2) 2. halvår 2009 og frem Maven sites, Clover rapporter VPDeploy Maven Plugin... 29

Tak! Kommentarer og spørgsmål? Next up: Michael Bang 30