SlideShare a Scribd company logo
1 of 28
Continuous Integration Continuous Integration
Bloghttp://rickardnilsson.net Twitter@rickardnhttp://twitter.com/rickardn
Continuous Integration Continuous Integration är en utvecklingsteknik där medlemmar av ett utvecklingsteam frekvent integrerar sina kodförändringar, åtminstone dagligen. Varje integration verifieras av ett automatiskt bygge (inklusive test) för att upptäcka integrationsfel så fort som möjligt. Många team har vittnat om att den här metoden leder till minskat antal integrationsproblem och hjälper teamet att utveckla mjukvara snabbare*. *Källa: ThoughtWorks
Agenda Demo: Jobba med Continuous Integration Tekniker och verktyg Hur kan man börja med CI? Frågor
Demo: Jobba med Continuous Integration Get latest Inför förändring Produktionskod Testkod Bygg och testa lokalt Synkronisera med VCS Bygg och testa lokalt Check in Pending Changes Automatiskt bygge på byggserver Om bygget fallerar? Fixa det!
Tekniker En plats för all källkod Automatisera bygget Bygget testar sig själv Alla checkar in varje dag En integrationsmaskin bygger efter varje incheckning Bygget skall gå snabbt Testa i en klon av produktionsmiljön Gör den enkelt för alla att komma åt resultatet Alla kan se vad som händer Automatisera utrullning
En plats för all kod Version Control System All källkod Allt som behövs för att bygga Testskript Konfigurationsfiler Databasscheman Installationsskript Tredjepartskomponenter Men inget man byggt
Automatisera bygget Integration – en komplicerad process Lätt att göra fel Kan automatiseras – bör automatiseras Snabb feedback Byggverktyg Make Nant MSBuild Rake
Automatisera bygget Vanligt fel Att inte automatisera hela bygget Automatisera Databasschema Virgin machinerule
Byggskript Utför minsta möjliga arbete Targets Med/utan test Olika uppsättningar test Olika målmiljöer Lokalt Server IDE
Bygget testar sig själv Traditionell betydelse Kompilering, länkning osv… Automatiserad testning Inte perfekt men tillräckligt för vara användbart Extreme Programming (XP) Testdriven utveckling (TDD) Testfall av god kvalitet och täckning Enkelt kommando Ouppfyllt test innebär att bygget fallerat
Bygget testar sig själv Olika typer av test Enhetstest (NUnit, MSTest, m.m.) Går att upprepa Lätt att implementera Kan köras av vem som helst Kan köras genom ett enkelt kommando Använder inte externa beroenden som filsystem, databas eller web services Integrationstest Funktion/Acceptanstest
Acceptanstest – End to end FIT Selenium Watir FITnesse Cucumber WatiN WebAii SpecFlow
Alla checkar in varje dag Integration är kommunikation Check in-cykel Hämta senaste Fixa konflikter Bygg lokalt Checka in Att göra det ofta ger snabb feedback Lättare att hitta och fixa buggar
Alla checkar in varje dag I praktiken oftare än en gång per dag Färre ställen att felsöka på Bryta ner arbetet i mindre bitar Uppföljning Känsla av progress
En integrationsmaskin bygger efter varje incheckning Saker går ändå fel Incheckning anses inte klar förrän byggningen är grön på integrationsmaskinen Utvecklaren är ansvarig måste alltså övervaka byggningen Får inte gå hem förrän byggningen är grön
En integrationsmaskin bygger efter varje incheckning Continuous Integration Server Cruise Control Cruise Control.Net Team Suite Team City Remote Run
Bygget skall gå snabbt Snabb feedback Under 10 minuter Om testning är en flaskhals Parallellisera Flera agenter Uppdelad testfas Incheckningstest Tidskrävande test
Testa i en klon av produktionsmiljön Hitta problem systemet har i produktion Miljön är en viktig faktor Varje miljö från utveckling till staging skall vara så lik produktion som möjligt
Gör den enkelt för alla att komma åt resultatet Det är svårt att i förväg beskriva vad du vill ha Lättare att utgå ifrån något och beskriva vad som behöver ändras Agila utvecklingstekniker bygger på att utnyttja detta Vem som helst i projektet ska kunna komma åt och använda produkten när som helst
Alla kan se vad som händer CI är kommunikation Produktens status Feedback till Teamet Kunden Ledning Övervakning Larm Statistik Uppföljning
Automatisera utrullning Kräver flera miljöer Incheckning Andrahandstest Utrullningsskript Automatiserad utrullning till produktion Snabbar upp process Minimerar fel Automatiserad rollback
Fördelar med Continuous Integration Reducerad risk Inga överraskningar i slutet Gör det lättare att hitta och ta bort buggar Underlättar för frekvent utrullning PotentiallyShippable Product Increment Hela tiden
Hur kan man börja med CI? Automatisera byggningen Ett kommando Byggserver Enhetstestning För varje ny bugg – skriv ett enhetstest Snabba upp byggningen Nytt projekt? Starta med CI från början Mentor / utbildning
Frågor?
Tack för visat intresse!

More Related Content

Similar to Continuous integration

Lyckas med test i continuous-världen
Lyckas med test i continuous-världenLyckas med test i continuous-världen
Lyckas med test i continuous-världenADDQ
 
Testare i continuousvärlden - vad gör jag om dagarna.
Testare i continuousvärlden - vad gör jag om dagarna.Testare i continuousvärlden - vad gör jag om dagarna.
Testare i continuousvärlden - vad gör jag om dagarna.ADDQ
 
Continuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och DockerContinuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och DockerKristoffer Vidmo
 
TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06Solidify
 
Solidify continuous delivery 2014
Solidify   continuous delivery 2014Solidify   continuous delivery 2014
Solidify continuous delivery 2014Solidify
 
Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...
Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...
Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...IBM Sverige
 
Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard Alex Eriksson
 
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017Frontit
 
Open ePlatform, Offentliga rummet 2014
Open ePlatform, Offentliga rummet 2014Open ePlatform, Offentliga rummet 2014
Open ePlatform, Offentliga rummet 2014Jari Koponen
 
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim LindbomRevitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim LindbomJoakim Lindbom
 
Test och värdeskapande
Test och värdeskapandeTest och värdeskapande
Test och värdeskapandeJohan Hoberg
 

Similar to Continuous integration (12)

Lyckas med test i continuous-världen
Lyckas med test i continuous-världenLyckas med test i continuous-världen
Lyckas med test i continuous-världen
 
Testare i continuousvärlden - vad gör jag om dagarna.
Testare i continuousvärlden - vad gör jag om dagarna.Testare i continuousvärlden - vad gör jag om dagarna.
Testare i continuousvärlden - vad gör jag om dagarna.
 
Continuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och DockerContinuous Delivery med Tutum och Docker
Continuous Delivery med Tutum och Docker
 
TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06TFS 2013 Deep-Dive på LabCenter 2014-02-06
TFS 2013 Deep-Dive på LabCenter 2014-02-06
 
Solidify continuous delivery 2014
Solidify   continuous delivery 2014Solidify   continuous delivery 2014
Solidify continuous delivery 2014
 
Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...
Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...
Mobila lösningar - bygg din framgång med små och snabba steg! - Smarter Busin...
 
Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard
 
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
 
Kth Nov 09
Kth Nov 09Kth Nov 09
Kth Nov 09
 
Open ePlatform, Offentliga rummet 2014
Open ePlatform, Offentliga rummet 2014Open ePlatform, Offentliga rummet 2014
Open ePlatform, Offentliga rummet 2014
 
Revitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim LindbomRevitalisering av legacy - är det möjligt - Joakim Lindbom
Revitalisering av legacy - är det möjligt - Joakim Lindbom
 
Test och värdeskapande
Test och värdeskapandeTest och värdeskapande
Test och värdeskapande
 

Continuous integration

  • 3. Continuous Integration Continuous Integration är en utvecklingsteknik där medlemmar av ett utvecklingsteam frekvent integrerar sina kodförändringar, åtminstone dagligen. Varje integration verifieras av ett automatiskt bygge (inklusive test) för att upptäcka integrationsfel så fort som möjligt. Många team har vittnat om att den här metoden leder till minskat antal integrationsproblem och hjälper teamet att utveckla mjukvara snabbare*. *Källa: ThoughtWorks
  • 4. Agenda Demo: Jobba med Continuous Integration Tekniker och verktyg Hur kan man börja med CI? Frågor
  • 5. Demo: Jobba med Continuous Integration Get latest Inför förändring Produktionskod Testkod Bygg och testa lokalt Synkronisera med VCS Bygg och testa lokalt Check in Pending Changes Automatiskt bygge på byggserver Om bygget fallerar? Fixa det!
  • 6.
  • 7. Tekniker En plats för all källkod Automatisera bygget Bygget testar sig själv Alla checkar in varje dag En integrationsmaskin bygger efter varje incheckning Bygget skall gå snabbt Testa i en klon av produktionsmiljön Gör den enkelt för alla att komma åt resultatet Alla kan se vad som händer Automatisera utrullning
  • 8. En plats för all kod Version Control System All källkod Allt som behövs för att bygga Testskript Konfigurationsfiler Databasscheman Installationsskript Tredjepartskomponenter Men inget man byggt
  • 9. Automatisera bygget Integration – en komplicerad process Lätt att göra fel Kan automatiseras – bör automatiseras Snabb feedback Byggverktyg Make Nant MSBuild Rake
  • 10. Automatisera bygget Vanligt fel Att inte automatisera hela bygget Automatisera Databasschema Virgin machinerule
  • 11. Byggskript Utför minsta möjliga arbete Targets Med/utan test Olika uppsättningar test Olika målmiljöer Lokalt Server IDE
  • 12. Bygget testar sig själv Traditionell betydelse Kompilering, länkning osv… Automatiserad testning Inte perfekt men tillräckligt för vara användbart Extreme Programming (XP) Testdriven utveckling (TDD) Testfall av god kvalitet och täckning Enkelt kommando Ouppfyllt test innebär att bygget fallerat
  • 13. Bygget testar sig själv Olika typer av test Enhetstest (NUnit, MSTest, m.m.) Går att upprepa Lätt att implementera Kan köras av vem som helst Kan köras genom ett enkelt kommando Använder inte externa beroenden som filsystem, databas eller web services Integrationstest Funktion/Acceptanstest
  • 14. Acceptanstest – End to end FIT Selenium Watir FITnesse Cucumber WatiN WebAii SpecFlow
  • 15. Alla checkar in varje dag Integration är kommunikation Check in-cykel Hämta senaste Fixa konflikter Bygg lokalt Checka in Att göra det ofta ger snabb feedback Lättare att hitta och fixa buggar
  • 16. Alla checkar in varje dag I praktiken oftare än en gång per dag Färre ställen att felsöka på Bryta ner arbetet i mindre bitar Uppföljning Känsla av progress
  • 17. En integrationsmaskin bygger efter varje incheckning Saker går ändå fel Incheckning anses inte klar förrän byggningen är grön på integrationsmaskinen Utvecklaren är ansvarig måste alltså övervaka byggningen Får inte gå hem förrän byggningen är grön
  • 18. En integrationsmaskin bygger efter varje incheckning Continuous Integration Server Cruise Control Cruise Control.Net Team Suite Team City Remote Run
  • 19. Bygget skall gå snabbt Snabb feedback Under 10 minuter Om testning är en flaskhals Parallellisera Flera agenter Uppdelad testfas Incheckningstest Tidskrävande test
  • 20. Testa i en klon av produktionsmiljön Hitta problem systemet har i produktion Miljön är en viktig faktor Varje miljö från utveckling till staging skall vara så lik produktion som möjligt
  • 21. Gör den enkelt för alla att komma åt resultatet Det är svårt att i förväg beskriva vad du vill ha Lättare att utgå ifrån något och beskriva vad som behöver ändras Agila utvecklingstekniker bygger på att utnyttja detta Vem som helst i projektet ska kunna komma åt och använda produkten när som helst
  • 22. Alla kan se vad som händer CI är kommunikation Produktens status Feedback till Teamet Kunden Ledning Övervakning Larm Statistik Uppföljning
  • 23. Automatisera utrullning Kräver flera miljöer Incheckning Andrahandstest Utrullningsskript Automatiserad utrullning till produktion Snabbar upp process Minimerar fel Automatiserad rollback
  • 24. Fördelar med Continuous Integration Reducerad risk Inga överraskningar i slutet Gör det lättare att hitta och ta bort buggar Underlättar för frekvent utrullning PotentiallyShippable Product Increment Hela tiden
  • 25. Hur kan man börja med CI? Automatisera byggningen Ett kommando Byggserver Enhetstestning För varje ny bugg – skriv ett enhetstest Snabba upp byggningen Nytt projekt? Starta med CI från början Mentor / utbildning
  • 26.
  • 28. Tack för visat intresse!