200 likes | 370 Views
Continuous Integration. DCFServices. Jan Wisén Francke-Larsen Systemkonsulent Dansk Landbrugsrådgiving, Landscentret Udkærsvej 15 DK-8200 Århus N E-mail: jfl@landscentret.dk Telefon: +45 87 40 50 00 Direkte: +45 87 40 50 83. Martin Fowler om CI….
E N D
Continuous Integration DCFServices
Jan Wisén Francke-Larsen Systemkonsulent Dansk Landbrugsrådgiving, Landscentret Udkærsvej 15 DK-8200 Århus N E-mail: jfl@landscentret.dk Telefon: +45 87 40 50 00 Direkte: +45 87 40 50 83
Martin Fowler om CI… • 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. • Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. • Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
Practices of CI • Maintain a code repository • Automate the build • Make your build self-testing • Everyone commits every day • Every commit (to mainline) should be built • Keep the build fast • Test in a clone of the production environment • Make it easy to get the latest deliverables • Everyone can see the results of the latest build • Automate Deployment
Lidt om mit projekt • Kvægdatabasen er central i Dansk Kvægs forretning • Basalt set EPJ for kvæg, får, geder osv. • Oracle 10g database med ca. 2 TB data. • ca. 2200 tabeller, 1000 views og 1000 procedurer. • Forretningslogik ligger i databasen i form af views og procedurer.
Lidt om mit projekt • DCFServices går ud på at implementere et lag af webservices ovenpå Kvægdatabasen • DCF står for ”Danish Cattle Federation” • Udvikles vha WCF (C# 3.5 i Visual Studio 2008, SP1) • Proces (Scrum) og kildekode styres, selvfølgelig, i TFS. • Bemandet med 4 mand (M/K)
Vores TFS Setup • TFS er installeret som en single server deployment, på en fysisk maskine. • Quad-core 2,21Ghz, 4Gb RAM. • Build serveren er en virtuel VMware maskine. • Xeon 2,33Ghz med 1Gb RAM
Før TFS 2008… • … hvor Continous Integration jo er indbygget, brugte vi… • Cruise Control til opsætning af bl.a. nightly builds • Microsofts CI Web Service til at implementere Continous Integration
Ulemper • Ikke integreret løsning. • Opsætning af builds skulle ske i .config filer, med fare for f.eks. ”syntax” fejl og lost updates • En opsætning for continous integration • En anden opsætning for nightly builds • Jeg mener også at vi havde problemer med at få overført build- og test status.
.. men nu • Det hele er indbygget i TFS 2008
… men da vi kører scrum… .. skal build projektfilen lige opdateres lidt for at oprette den rette type work item
... men der skal også … … oprettes et workitem hvis unittesten fejler
Vores build definitions • Continous Integration • Bygger hver gang der checkes ind. • Kører kun unittests • Nightly Build • Bygger mindst 1 gang dagligt • Kører unittests, deployer til testserver og kører integrationstests
Vores build definitions • Release build • Bygges efter behov, ellers ugentligt • Kører unittests, deployer til testserver, kører integrationstests, bygger installer. • Build-jobbet styrer versionering • Var sat op til at lave automatisk branch, men det er fjernet igen.
En solution pr. build definition • Vi har valgt at lave en solution pr. build definition. • Mere gennemskueligt • Giver finkornet kontrol over de enkelte builds • Flere solutions af vedligeholde • Indstillinger til Web Deployment projekter ligger i solution-filen, herunder projekt-afhængigheder