cruisecontrol.net in un progetto reale

24
CruiseControl.NET in un progetto reale Simone “CodeClimber” Chiaretta www.codeclimber.net.nz

Upload: dotnetmarche

Post on 19-Jun-2015

74 views

Category:

Technology


1 download

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

Page 1: CruiseControl.net in un progetto reale

CruiseControl.NET in un progetto reale

Simone “CodeClimber” Chiarettawww.codeclimber.net.nz

Page 2: CruiseControl.net in un progetto reale

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

Page 3: CruiseControl.net in un progetto reale

Agenda

• Continuous Integration– Cosa, perché e come

• CruiseControl.NET– Installazione– Componenti

• Best Practices di CC.NET– Subtext

Page 4: CruiseControl.net in un progetto reale

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)

Page 5: CruiseControl.net in un progetto reale

Perchè fare CI

• Lavoro in team• Ridurre il tempo di integrazione• Quindi sviluppare codice più

velocemente

Page 6: CruiseControl.net in un progetto reale

Come si fa CI

• Source Control• Build• Test• Verify

Page 7: CruiseControl.net in un progetto reale

CruiseControl.NET (1)

• Porting di CruiseControl• “Sponsorizzato” dalla

ThoughtWorks di Fowler

Page 8: CruiseControl.net in un progetto reale

CruiseControl.NET (2)

• Integration Server• WebDashboard• CCTray

Page 9: CruiseControl.net in un progetto reale

Server

• E’ l’orchestratore del processo di CI

• Raccoglie i log dei vari tool• Genera i risultati dell’integrazione

Page 10: CruiseControl.net in un progetto reale

Web Dashboard

• Mostra i risultati delle integrazioni• Reportistica varia

Page 11: CruiseControl.net in un progetto reale

CCTray

• Sta nella traybar • Monitorizza i progetti• Notifica il risultato di ogni

integrazione• Interfacciabile con X10

Page 12: CruiseControl.net in un progetto reale

Configurazione• XML based• Definisce il processo di

integrazione– Che sourcecontrol usare– Che task eseguire (Nant, MSBuild, DevEnv)

– Che publisher eseguire (notifiche, copie, reportistica)

Page 13: CruiseControl.net in un progetto reale

Configurazione

DEMO

Page 14: CruiseControl.net in un progetto reale

Best Practice:CI in Subtext

Page 15: CruiseControl.net in un progetto reale

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

Page 16: CruiseControl.net in un progetto reale

Setup Ambiente (1)

• artifactcontiene i “prodotti” delle build (log e build binarie)

• workingFolderla dir con i file scaricati dal SourceControl

Page 17: CruiseControl.net in un progetto reale

Setup Ambiente (2)

• Progetto CI-Config per aggiornare le configurazioni di CC.NET

Page 18: CruiseControl.net in un progetto reale

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

Page 19: CruiseControl.net in un progetto reale

Processo di Build (1)

• Build script di NAnt che lancia– MSBuild– MbUnit– NCover + NCoverExplorer– FxCop– Copia/Archiva/Zippa

Page 20: CruiseControl.net in un progetto reale

Processo di Build (2)

Page 21: CruiseControl.net in un progetto reale

"Post Integration" steps

Page 22: CruiseControl.net in un progetto reale

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

Page 23: CruiseControl.net in un progetto reale

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

Page 24: CruiseControl.net in un progetto reale

Q&A