• Save
Continuous Integration
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Continuous Integration

on

  • 1,105 views

CruiseControl.Net and MSBuild.

CruiseControl.Net and MSBuild.

Statistics

Views

Total Views
1,105
Views on SlideShare
1,096
Embed Views
9

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 9

http://www.linkedin.com 6
http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Continuous Integration Presentation Transcript

  • 1. CruiseControl.Net, MSBuild, Ant Průběžná integrace Automatizace buildu June 7, 2009 Presentation
  • 2. Agenda
    • CruiseControl.Net
    • MSBuild
    • Ant (Jakub Neubauer)
    June 7, 2009 Presentation
  • 3. June 7, 2009 Presentation 1. CruiseControl.Net
  • 4. CruiseControl.Net June 7, 2009 Presentation SVN CruiseControl.Net Dušan Radek Pepa commit update check for changes
  • 5. CruiseControl.Net - fíčuras
    • ccnet.thoughtworks.com
    • Port CruiseControl (java)
    • Nástroj na automatizované spouštění prakticky čehokoliv
    • B ěží jako service, pro ladění console
    • Podporuje mnoho VCS systémů
    • Podpora více „projektů“
    • Fronty
      • V rámci jedné fronty jsou projekty spouštěny sekvenčně
    • Server, Dashboard, CCTray
    • Přímá podpora MSBuild a NAnt
    June 7, 2009 Presentation
  • 6. CruiseControl.Net - konfigurace
    • Konfigurace v XML souboru ccnet.config
    • Triggers – kdy se integrace spouští
      • Schedule Trigger – např. pro noční build
      • Interval Trigger – když nastane změna
      • Project Trigger, Url Trigger
    • Source Control
      • Jaká adresa ve VCS se monitoruje
    • Prebuild – příprava před integrací
      • např. stažení dalších knihoven
    • Tasks – vlastní integrace
      • Spuštění build skriptu
    • Publishers – reporty
      • Merge XML souborů, maily, statistiky
    June 7, 2009 Presentation
  • 7. CruiseControl.Net – best practices
    • Build script nezávislý na CCNet
      • Integrační proces musí být spustitelný z vývojářova PC
    • Konfigurace a nástroje ve VCS
      • Auto-konfigurace
    • Integrate Often – every few hours
      • Čím dříve se na problém přijde, tím snadněji se odstraní
    • Žádný commit když je broken build
    June 7, 2009 Presentation
  • 8. CruiseControl.Net – antipatterns
    • Pomalý integrační proces
      • Vývojář by měl dostat info do 10 minut
      • Unit testy (skutečná izolace)
      • Inkrementální build
      • Rychlý stroj
    • Update a commit po dlouhé době
    • Broken build nikomu nevadí
      • Don't leave "broken windows”
    June 7, 2009 Presentation
  • 9. CruiseControl.Net – další hračky
    • Vista Sidebar Gadget link
    June 7, 2009 Presentation Big Visible Cruise link The Orb (Build Indicator Lamp) link ...a další link
  • 10. CruiseControl.Ne t
    • Odkazy
    • CruiseControl.Net
    • http://ccnet.thoughtworks.com/
    • Fowler: Continuous Integration
    • http://martinfowler.com/articles/continuousIntegration.html
    • Redefine Your Build Process with CI
    • http://msdn.microsoft.com/cs-cz/magazine/cc337886(en-us).aspx?pr=blog
    • CI Antipatterns
    • http://www.ibm.com/developerworks/java/library/j-ap11297/
    • Pr ůběžná integrace a CCNet
    • http://www.vyvojar.cz/Articles/556-prubezna-integrace-a-cruisecontrol-net.aspx
    • Dotazy?
    June 7, 2009 Presentation
  • 11. June 7, 2009 Presentation 2. MSBuild
  • 12. MSBuild
    • Command-line nástroj pro automatizaci buildu
    • Součást .NET Framework
    • Umí buildit VS *.csproj a *.sln soubory
    • „ Něco jako Ant“ :-)
    • Shodný build systém jako VS2005
    • Rozšiřitelný DLL knihovny s vlastními Tasky XML „knihovny“ Targetů
    June 7, 2009 Presentation
  • 13. MSBuild – základy
    • Build script ve formátu XML
    • Stejný formát jako VS *.csproj
    • Doporučená přípona: *.proj
    • Struktura souboru
    • Import jiných souborů
    • Deklarace Properties – dají se nastavit i z příkazové řádky nebo environment vars
    • Deklarace Items a jejich metadat (well-known item metadata)
    • Targets – pojmenované úkoly, které lze selektivně spouštět, jsou na sobě závislé
    • Targety se skládají z Tasků
    June 7, 2009 Presentation
  • 14. MSBuild – built-in tasks June 7, 2009 Presentation MSBuild Task Reference
  • 15. MSBuild – proměnné a items
    • $(propertyName) - Odkaz na property
    • @(itemName) - Odkaz na kolekci items
    • %(itemName.metadata) - Vlastnost items
    • @(itemName->’…’) – Transformace items
    June 7, 2009 Presentation @(BuiltAssemblies) Gmc.Ginger.Data.dll, Gmc.Ginger.Domain.dll @(BuiltAssemblies->'$(ResultsPath)%(Filename).FxCop.xml') ResultsGmc.Ginger.Data.FxCop.xml, ResultsGmc.Ginger.Domain.FxCop.xml
  • 16. MSBuild – customizace
    • Cesty k nástrojům a nastavení prostředí může mít každý jinak – je zapotřebí mít možnost je měnit bez zásahu do build skriptů
    • Parametry příkazové řádky – pro jednorázovou změnu
    • Build.user – trvalé nastavení prostředí, importován v build skriptech
    June 7, 2009 Presentation
  • 17. MSBuild – batching
    • Podle použitých metadat prvků kolekce rozdělí MSBuild prvky do dávek a spustí task pro každou dávku zvlášť
    • Díky tomu nejsou potřeba cykly
    • Task Batching – na úrovni tasku
    • Target Batching – pomocí Inputs a Outputs, pro inkrementální build
    June 7, 2009 Presentation
  • 18. MSBuild – incremental build
    • Target má vlastnosti Inputs a Outputs Pokud jsou soubory specifikované v Inputs starší než soubory Outputs, target bude přeskočen
    • Pokud je na vstupu kolekce , target bude spuštěn pouze pro prvky, pro které neexistuje output nebo je starší než input
    June 7, 2009 Presentation Inputs Outputs Gmc.System.dll -> ResultsGmc.System.FxCop.xml Gmc.Ginger.Data.dll -> ResultsGmc.Ginger.Data.FxCop.xml Gmc.Ginger.Domain.dll -> ResultsGmc.Ginger.Domain.FxCop.xml
  • 19. MSBuild – rozšiřitelnost
    • Knihovny Targetů Např. Gmc.targets, UnitTest.targets v projektu Ginger
    • Vlastní Tasky Např. MSBuild Community Tasks šikovné pro práci s XML a XSLT, nahrazování řetězců, SQL, SVN...
    • Vlastní Logger – MSBuild mu přeposílá události během buildu CruiseControl.Net poskytuje vlastní logger, který formátuje build log do XML
    June 7, 2009 Presentation
  • 20. MSBuild – co vše lze spouštět
    • Co zahrnuje automatický build projektu Ginger:
    • Automatické vyhledání projektů (*.csproj) v produktu
    • Automatické přidání test projektů pro všechny projekty
    • Kompilace
    • Instalace (řešeno přes vlastní Target)
    • Unit testy s měřením coverage (per project)
    • Statická analýza pomocí FxCop
    • Analýza závislostí mezi DLL knihovnami
    • Zpracování a publikování HTML reportů
    June 7, 2009 Presentation
  • 21. MSBuild
    • Odkazy
    • MSBuild Overview
    • http://msdn.microsoft.com/en-us/library/wea2sca5.aspx
    • MSBuild Reference
    • http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx
    • An Introduction to MSBuild
    • http://www.codeproject.com/KB/books/msbuild.aspx
    • Dotazy?
    June 7, 2009 Presentation
  • 22. June 7, 2009 Presentation PS: Kdo proboha vymyslel Office 2007???! Thank You.