Etikettarkiv: continuous integration

Att undvika långsamma byggen

LångsammaByggenAutomatisering av byggen är en viktig del i Continuous Integration. Det är dock inte en engångsaktivitet. Man behöver följa upp hur bygget mår över tid. Allt eftersom man kommer längre in i projektet så tenderar det att ta längre tid att bygga systemet och köra alla tester. Eftersom det är viktigt att få snabb feedback på byggen så måste man analysera vad som tar tid och försöka hitta lämpliga åtgärder.

Om man har moduler som tar lång tid att bygga men som inte förändras ofta så kan man överväga att bryta ut dessa från huvudbygget och låta dem byggas i ett sekundärt bygge.

Enhetstester som körs i samband med bygget ska vara snabba att köra. Analysera om det finns tester som tar lång tid och se om de kan optimeras eller om de ska göras om till komponent- eller systemtester som kan köras i ett sekundärt bygge.

Om flera utvecklare uppdaterar versionshanteringssystemet samtidigt kan det uppstå kö på CI-servern vilket gör att man inte får tillräckligt snabb feedback (ett integrationsbygge bör ta max 10 minuter). Om man ser att det ofta blir köbildning så kan man eventuellt utöka resurserna med flera maskiner som kan bygga. Då kan man sprida ut lasten på olika noder. Detta är också att föredra om man använder sekundära byggen eftersom dessa ofta tar längre tid så bör de köra på en annan nod än huvudbygget som måste köra snabbt.

Rekommenderad läsning om Continuous Integration

Denna bok borde vara obligatorisk läsning för alla som jobbar med systemutveckling. Många använder diverse verktyg för att automatiskt bygga och testa sina system. Det som är bra med denna bok är att den inte fokuserar på verktygen utan på det mindset och arbetssätt som Continuous Integration innebär. Boken visar med flera exempel vilka problem som kan uppstå och hur Continuous Integration kan hjälpa till att höja kvaliteten i det som produceras, minska risker samt synliggöra vilken status systemet och projektet befinner sig i.

Continuous Integration: Improving Software Quality & Reducing Risk (ADDISON-WESLEY, 2007)