Continuous Integration med Jenkins. Linus Tolke Enea Experts



Relevanta dokument
Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

Versionshantering. Jan Erik Moström

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

Användning av testautomation inom Extendas utvecklingsorganisation

på ett stort spelföretag Andreas Ström

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

BizTalk Build & Deploy. Med Jenkins och PowerShell

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Varningssystem byggt på öppna källkodskomponenter Magnus Runesson SMHI

Verktyg och Utvecklingsmiljö. Jochim von Hacht

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

Plattform as a Service, leverantör tillhandahåller plattformen, jag tillhandahåller applikation och ansvarar för denna.

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,16 december (29)

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

F6 Exchange EC Utbildning AB

Projektplan, Cykelgarage

Uppdateringsguide v6.1

DI Studio nyheter

Heartbleed. Lite smått och gott om heartbleedbuggen. Robert Malmgren

Testning av applikationer

Program för skrivarhantering

Kvalitetssäkra ditt projekt med kontinuerlig integration

Introduktion till git

Testautomatisering. Intro

Öppna data på Gävle kommun

Vad är molnet? Vad är NAV i molnet? Vem passar NAV i molnet för? Fördelar med NAV i molnet Kom igång snabbt...

Uppgradera KNX till en högre komfortnivå

Tekniskt system för Lean Startup

Webbservrar, severskript & webbproduktion

Mål. Uppdrag. NuvoAir, Stockholm Oktober 2017 Februari Spotify, Stockholm Februari 2017 September 2017

Molntjänster -- vad är molnet?

Versionshantering med Git. Henrik Henriksson 17 april 2018

Projekt intranät Office 365 av Per Ekstedt

Storegate Pro Backup. Innehåll

Grundkurs i programmering - intro

Introduktion till hårdvara, mjukvara och operativsystem

Petter Berglund. Sammanfattning

Verktyg för agil systemutveckling. Vad är ett verktyg? Olika typer av verktyg för mjukvaruutveckling. Vad kan ett bra verktyg tillföra?

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.

Metoder och verktyg för funktionssäkerhet

32 Bitar Blir 64 Sammanfattning

Har funnits nästan lika länge som datorerna. Manuell process, svarta tavlan Verktygsstöd kom tidigt redan i början på

Regressionstestning teori och praktik

Utvärdering av distansmötesverktyg via Internet.

Programvara på Nada. Johan Berglund Systemgruppen, Nada

Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg

Felsökningsguide för Asgari-kameror

Din egen webserver med Apache

Examensarbete+! vid$csc,$kth!

Praktikum i programvaruproduktion

Lumia med Windows Phone

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

Programvaror - Jo, tack, det vill vi ha...

UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM!

Verktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola

ID1020 Introduktion av Maven. Dr. Jim Dowling

Programmering i C++ Kompilering från kommandoraden

Skapa ett paket av TI-Nspire programvara med Microsoft SMS 2003

QC i en organisation SAST

Föreläsning 2 Verktyg m.m.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Program för skrivarhantering

DIG IN TO Nätverksadministration

Universe Engine Rapport

Installationsguide fo r CRM-certifikat

TMP Consulting - tjänster för företag

Ändringar i samband med aktivering av. Microsoft Windows Vista

Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund

Installera din WordPress med 9 enkla steg

Information till användaren att han/hon måste aktivera mjukvaran.

Automatiskt byggande med Ant

Advanced Mobile Device Management

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

FileMaker Pro 11. Köra FileMaker Pro 11 på Citrix XenApp

TDDD80 Mobila och sociala applikationer. Kursintroduktion

RUG Trace JDBC error. Sandvik IT Services

1 Installationsinstruktioner

Säkra pausade utskriftsjobb. Administratörshandbok

Introduktion till programmering, hösten 2011

KAP 18 SQL SERVER AGENT

Verktyg för statisk kodanalys

Uppgradering till DentalEye 3.2

Dr. Gustav Taxén MDI-Gruppen, CSC / VIC-Sthlm gustavt@kth.se

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System

Testramverk och Model based testing med java i praktiken

SKOLFS. beslutade den -- maj 2015.

FileMaker. Köra FileMaker Pro 10 på Terminal Services

Pragmatisk programmering. Cyberrymden Marcus Rejås Pragmatisk programmering,19 september (26)

Slutrapport Vertikala Sökmotorer Uppdrag från.se:s Internetfond Våren 2008

En syn på säkerhet. Per Lejontand

Android översikt. TDDD80 Mobila och sociala applikationer

Unix-miljöer i större sammanhang

Installationsguide Junos Pulse för MAC OS X

Alla rättigheter till materialet reserverade Easec

Nej, Latitude ON Flash är för närvarande endast tillgängligt på följande Dell datorer: Dell Latitude E4200 Dell Latitude E4300

Vi digitaliserar din produkt

Transkript:

Continuous Integration med Jenkins Linus Tolke Enea Experts

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Grunderna i Mjukvaru-CM Versionshanteringssystem Subversion CVS Dimensions Git... CM-arkiv För Open Source: SourceForge Google Code Tigris GitHub För inte-öppna projekt: En server inom företaget En köpt tjänst

Utvecklarnas maskiner Kopplar sig till CM-Arkivet över Internet (Open Source, köpt tjänst) inom ett slutet nätverk (egen server)

Organisation av källkod CM-arkivet innehåller Koden - för produkten Testfallen Regler för hur man bygger ihop produkten och kör testfallen (makefiler, konfigurationsfiler, mm). Regler för statisk analys, kodningsstil, mm. Om man vill säkerställa en stabil miljö kan det också innehålla verktyg för att bygga (kompilator, include-filer för målmiljön, mm). Maven-världen har en mer långtgående lösning på detta.

Organisation av testfall Unit test Testar en klass i taget - stubbar för allt Går snabbt att köra - Eclipse kan dresseras till att köra dem när man sparar Integrationstestfall eller systemtestfall Testar flera delar av produkten tillsammans (flera olika klasser, flera olika jar-filer) Tar ofta lång tid att köra Ibland behövs speciella verktyg (licenser, databaser) Statisk analys och efterlevnad av kodningsstandard Eclipse gör en del och visar direkt, även checkstyle Annars tunga verktyg (checkstyle och findbugs för java, lint++ m.fl)

CM-arkivet är integrationspunkten Integration sker vid varje incheckning Krav på uppnådd kvalitet vid varje incheckning bestäms av projektet eller produktutvecklingsorganisationen. Låga krav ger större risk att projektdeltagare får felsöka andras fel kvalitén urholkas Höga krav ger extraarbete vid varje incheckning mycket tid spenderas på att köra testerna om igen för andras ändringar

Exempel på krav för incheckning Alla testfall körda med godkänt resultat Alla statiska kontroller körda med godkänt resultat Fungerar bra om det går snabbt att köra alla tester och statiska kontroller (< 5 minuter) det finns bra verktyg som rapporterar resultatet programmet och testfallen är plattformsoberoende (eller plattformen liknar utvecklarmaskinerna) alla utvecklingsmaskiner har tillgång till alla verktyg (licenser mm)

Arbete för varje incheckning i exemplet 1. Implementera funktion och testfall. 2. Kompilera och kör testfall. 3. Om du inte är klar eller det är fel gå tillbaka till 1. 4. Gör Rebase. 5. Kör alla statisk analysverktyg som måste köras vid incheckning. 6. Kolla resultatet. 7. Om det är några fel, gå tillbaka till 1. 8. Kör alla testfall som måste köras vid incheckning. 9. Kolla resultatet. 10. Om det blir något fel, felsök och gå tillbaka till 1. såvida det inte är någon annan som orsakat problemet då får du vänta tills han är klar och sedan gå tillbaka till 3. 11. Checka in.

Exempel på lite tuffare krav Alla testfall körda med godkänt resultat i alla plattformar Ofta svårt det kan finnas ont om tillgängliga plattformar, simulatorer och licenser det blir lätt väldigt många kombinationer av HW * OS * Kompilator alla utvecklare eller alla personer som sköter integrationen måste klara av att köra alla dessa kombinationer

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Trender inom mjukvaruutveckling Utvecklarnas IDE:er förväntas göra allt mer och kräver mer och mer av utvecklarens maskin (utnyttjar flera kärnor/cpu: er) Testdriven utveckling ger fler och fler testfall och ett krav på att köra dem oftare och snabbare Kraven, vid mjukvaruutveckling, ökar. Därmed ökar också kraven på de verktyg som skall hjälpa oss att hitta dessa problem Verktygen blir fler och mer avancerade och kodmängden ökar vilket gör att körningen av verktygen tar allt längre tid Utvecklingen av datorer i pris/prestanda hinner inte med, speciellt som utvecklarnas maskiner ofta jämförs i pris med datorer som används för enklare administrativa uppgifter

Lösning Sänk kraven för varje incheckning Allt kompilerar Modultester körda Snabb syntax-kontroll för kodningsstilen (Eclipse inbyggda) Kör tunga och repetitiva tester efter incheckning Alla nödvändiga kombinationer av plattformar Tidskrävande verktyg för statisk analys Starta de tunga testerna så snabbt som möjligt efter varje incheckning

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Continuous Integration Lösningen uppskruvad Definition av begreppet: "A fully automated and reproducible build, including testing, that runs many times a day" Martin Fowler (September 2000) "A Software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base." http://whatis.com (July 2008)

Fördelar med Continuous Integration Varje utvecklare integrerar hela tiden eller i alla fall vid varje rebase och varje incheckning - då minskas integrationsproblemen Ger snabb återkoppling om hur mjukvaran mår. Det går att se när ett fel introduceras i kodbasen och det kan snabbt korrigeras. Vi visualiserar produktens kvalitet på flera nivåer.

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Verktyget Jenkins Hette förut Hudson En produkt med följande funktion: Bygga kod och köra testfall Polla CM-arkivet Hämta källkod från CM-arkivet Köra skript Lagra resultatet och tillhandahålla på webben Presentera skillnader mellan resultat Massor av plug-in:er för olika versionshanteringssystem, kompilatorer, testfallsramverk och verktyg för statisk analys Extra bra integration med Maven för att minska mängden nödvändig konfiguration Ett Open Source-projekt i java som använder maven som byggmiljö

Vilka mål har varit vägledande för utvecklingen av Jenkins Få bort tråkigt repetitivt arbete från utvecklaren som annars lätt glömmer det köra automatiserade testfall och statisk analys Lätt att installera Lätt att konfigurera

Köra testfallen i Jenkins

Köra testfallen i Jenkins Utvecklaren jobbar vidare Utvecklaren kollar läget i nästa naturliga paus Jenkins skickar mail om något är fel Appar, SMS, Häftiga lampor, tutor och annat som talar om när något måste göras.

Köra testfallen i Jenkins

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Demo Skapa nytt jobb Kör det Olika vyer in ibland jobben Build history Projekt Byggen Diagram Titta på resultatet Olika perspektiv Vad blir enklare med Maven?

Ytterligare en dimension i resultatet Tidsdimensionen Lätt att hitta vilken incheckning som införde problemet Se rättade fel För statisk analys, lätt att se utvecklingen

Översikt av plug-in CM-arkivtyper Dimensions, Selenium User management Github auth, Mysql auth, LDAP email Notification of results IRC, Jabber, Google Calendar, Skype, Twitter Rapporteringssammanställning Cobertura, PMD, findbugs

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

CI och Jenkins i ArgoUML-projektet Testresultat på webben sedan september 2003 "Nightly build" sedan juni 2005 Hudson sedan mars 2009 Byte till Hudson Enklare att uppgradera verktyg (Maven) Rapporter får den extra dimensionen Enklare publicering av resultatet

Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem och lösningar

Potentiella problem Jenkins föreslagna lösning ArgoUMLs lösning

Problem: Bygget startar efter halva incheckningen Kan hända om man kör CVS eller Dimensions som inte har atomära incheckningar över flera filer Har flera subversion-arkiv som skall byggas och gör incheckningar över flera Använder subversion-verktyg eller processer som inte gör atomära incheckningar Jenkins lösning: Jenkins kan vänta en stund efter senaste incheckning innan den startar jobbet

Problem: För många incheckningar Kan uppstå om: De byggmaskiner man har är för få eller för svaga så att de inte hinner med. Man har väldigt många utvecklare. Jenkins lösning: Varje bygge startar på det senaste som finns i CM-arkivet. Om incheckningarna är för många kommer inte varje incheckning att byggas. Annan lösning: Köp fler eller kraftigare maskiner.

Problem: Långa skript för att bygga Kan uppstå om man vidareutvecklar skript direkt i Jenkins Jenkinsutvecklarens rekommendation: Lägg skripten i något CM-arkiv som ett verktyg Lösning som vi använder i ArgoUML-projektet: Hämta ut dem i samband med bygget Konsekvenser: Allt byggs om om man ändrar något av skripten (oftast bra).

Exotiskt problem: Långsam lina Kan uppstå om: Man har många olika byggen mot samma CM-arkiv Man har konfigurerat för att radera och checka ut allt för varje bygge Långsam lina mellan Jenkins-servern och CM-arkivet CM-arkivet har hög belastning Lösning som vi använder för ArgoUML: Kör en spegling av CM-arkivet på Jenkins-servern. Speglingen uppdateras regelbundet, till exempel av ett Jenkins-jobb Kör alla jobb mot det speglade CM-arkivet iställt för det ordinarie