Continuous integration

3,173 views

Published on

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Continuous integration

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

×