cruisecontrol.net in un progetto reale
DESCRIPTION
La Continuous Integration è una pratica di sviluppo fondamentale per migliorare la qualità del software: CruiseControl.NET è una suite open-source per gestire questo processo in modo trasparente al team di sviluppo. Il relatore mostrerà i vantaggi derivati dall'uso di tale metodologia in un caso pratico, ovvero nello sviluppo della piattaforma di blogging Subtext, di cui è membro del team di sviluppo, nonché Build Manager.TRANSCRIPT
CruiseControl.NET in un progetto reale
Simone “CodeClimber” Chiarettawww.codeclimber.net.nz
Who is “CodeClimber”?
• Chi di voi è Milanista?
• All’anagrafe Simone Chiaretta• Sviluppatore e Architetto .NET (C#)• Membro UGIdotNET• OpenSource (FCKeditor e Subtext)• 2 Gennaio: Flying to Wellington
Agenda
• Continuous Integration– Cosa, perché e come
• CruiseControl.NET– Installazione– Componenti
• Best Practices di CC.NET– Subtext
Continuous Integration
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.
(Martin Fowler)
Perchè fare CI
• Lavoro in team• Ridurre il tempo di integrazione• Quindi sviluppare codice più
velocemente
Come si fa CI
• Source Control• Build• Test• Verify
CruiseControl.NET (1)
• Porting di CruiseControl• “Sponsorizzato” dalla
ThoughtWorks di Fowler
CruiseControl.NET (2)
• Integration Server• WebDashboard• CCTray
Server
• E’ l’orchestratore del processo di CI
• Raccoglie i log dei vari tool• Genera i risultati dell’integrazione
Web Dashboard
• Mostra i risultati delle integrazioni• Reportistica varia
CCTray
• Sta nella traybar • Monitorizza i progetti• Notifica il risultato di ogni
integrazione• Interfacciabile con X10
Configurazione• XML based• Definisce il processo di
integrazione– Che sourcecontrol usare– Che task eseguire (Nant, MSBuild, DevEnv)
– Che publisher eseguire (notifiche, copie, reportistica)
Configurazione
DEMO
Best Practice:CI in Subtext
Subtext is a personal blog publishing platform that focuses on usability, elegance, and simplicity. If you’ve ever caught yourself throwing your hands in the air and declaring that you’re going to write your own blogging engine, then Subtext is for you.
http://www.subtextproject.com
Setup Ambiente (1)
• artifactcontiene i “prodotti” delle build (log e build binarie)
• workingFolderla dir con i file scaricati dal SourceControl
Setup Ambiente (2)
• Progetto CI-Config per aggiornare le configurazioni di CC.NET
Branch parallele
Ogni branch ha nel suo repository anche i tool usati per la build:
• Non è necessario installare sul server i tool
• Versioni diverse potrebbero non essere compatibili
Processo di Build (1)
• Build script di NAnt che lancia– MSBuild– MbUnit– NCover + NCoverExplorer– FxCop– Copia/Archiva/Zippa
Processo di Build (2)
"Post Integration" steps
Subtext Roadmap
• 1.9.3 – BlogML 2.0 (14/12/06)• 1.9.x – bug fixes e small enanchements• 2.0 “Poseidon” (Q2 07)
– Plugin– Membership API (multi-users blog)– Code Refactoring
• 2.1 “Red October” (Q4 07)– Masterpages e skin upload tool– I18n e “forse” nuova grafica admin
Links
• Continuous Integration by Martin Fowler http://www.martinfowler.com/articles/continuousIntegration.html
• CruiseControl.NEThttp://confluence.public.thoughtworks.org/display/CCNET
• Subtexthttp://www.subtextproject.com
• Subtext CI Dashboardhttp://haacked.dyndns.org/ccnet/
• SubText cruises with CruiseControl.NEThttp://www.subtextproject.com/Home/Docs/Developer/ContinuousIntegration/tabid/145/Default.aspx
Q&A