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.
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