ALM Live Flytta din källkod till Team Foundation Server Mathias Olausson Callista Knowledgebase mo@callista.se http://olausson.net/blog
Utlottning av böcker För er som lämnar in utvärderingen
Om... Mathias Olausson Arkitekt, instruktör Fokus på VSTS sedan 05 Utbildning, implementation, anpassning mo@callista.se, http://olausson.net/blog Callista Knowledgebase Microsoft Gold Partner Custom Development Solutions Database Management Solutions Advanced Infrastructure Medlem i VSTS Inner Circle http://knowledgebase.callista.se
Agenda Introduktion Källkodshantering med TFS Scenarios för migrering Byggautomatisering
Agenda Introduktion Källkodshantering med TFS Scenarios för migrering Byggautomatisering
Varför är du här? Ja, något verktyg måste man ju ha... SCM; Software Change Management SCCM; Software Configuration and Change Management TFS låter bra...men är det något för mig? TFS är bra...så hur blir jag av med VSS/SVN/CVS/...?
Användare av SCM Byter verktyg oftare Större flexibilitet Flertal olika verktyg Mer arbete att integrera Ökad risk för fel Fokus på produktleverans Utvecklingsprocess inte så viktigt Vikigt med verktyg som passar utvecklare Ofta open-source eller lågprisprodukter
Användare av SCCM Integrerade verktyg Automatisering av arbetsflöden Standardisering och förbättring av ändringprocess Ledning, inte individer, väljer verktyg Långsiktliga val
Krav på SCCM Hantering av ändringar under utveckling och förvaltning Anpassningsbart per projekt Säkerställa utveckling av kvalitativa moduler Tillhanda tidsbaserad återställning Stötta distans- och distribuerad utveckling Tillhandahålla nyckeltal för projekt Analysfunktioner
Team System är för SCCM Del av Microsofts ALM erbjudande Forrester Research Unified SCCM Solutions, Q2 2007 Väl positionerat för framtiden Tung produktstrategi Fokus på plattformen Partners gör add-ons
Visual Studio Team System Rollspecifik funktionalitet Integrerade verktyg Samarbetsplattform Anpassningsbar plattform
Nyheter i Team System 2008 Bättre designers för arkitekter Stöd för WSS 3.0, MOSS 2007, Windows 2008 Server, SQL Server 2008, 64-bit Enhetstester i professional edition Förenklad TFS installation Enkel uppgradering från 2005 Förbättrad profiler för utvecklare Testning av ASP.NET AJAX Snabbare enhetstester
Agenda Introduktion Källkodshantering med TFS Scenarios för migrering Byggautomatisering
Källkodshantering med TFS Mål med TFS Funktioner Parallellutveckling Anpassning Klienter Nyheter i TFS 2008 Power Tools Alternativa lösningar
Mål med TFS Skalbarhet Treskiktad arkitektur SQL Server 2005 Stöd för stora team Lagring begränsas bara av SQL Server och hårdvara Tillförlitlighet Atomära incheckningar Säkerhet Distribuerad utveckling HTTP Transport Proxy Server Visual Studio SOAP / HTTP(S) VSTS Application Tier Version Control Service MSSQL/TCP SQL Server 2005
Funktioner Grundläggande funktioner Workspace Changeset Shelving Labels
Changeset Samlingsbegrepp för Filer och branchinformation Länkar till work items Checkin notes Kommentar Policy Övrig metadata Atomär enhet Unikt identifierad Representerar en punkt i tiden i repositoryt
Shelving Mekanism för att sätta saker åt sidan Kan automatiskt återställa kod till nolläge Skapar ett shelveset Kan delas mellan projektmedlemmar Lättviktsbranching Exempel Lägga saker åt sidan (tillfälligt) Backup Dela arbete mellan projektmedlemmar Kodgranskning
Workspace Klientsidemappningen av repository Håller kopior av filer som hämtas från TFS Ändringar i ett workspace skapar pending changes Kopplas unikt till användare+maskin
Labels Markör kopplad till kod som referens Identifierar filer i repositoryt Är inte versionshanterade Innehåller en singel version av varje fil
Demo Källkodshantering med TFS
Parallellutveckling Multipla versioner Branch Skapa en kopia av koden för varje version som underhålls Varje gren kan ha olika behörigheter Merge Sammanfoga ändringar i olika grenar Multipla utcheckningar Fil kan checkas ut av flera utvecklare Ändringar kan sammafogas lokat innan incheckning
TFS Branching TFS använder en grenbaserad branch modell Men filer kopieras först när de ändras Tänk igenom behov för att skapa rätt typ av branchstruktur Förvaltning Nyutveckling R&D Se även TFS Branching Guidance http://www.codeplex.com/branchingguidance
Branch för förvaltning Dev branch skapas för utveckling Main branch används för stabilisering Release branch skapas för release underhålls efter release
Branch för feature Branch skapas för feature Feature integreras till main när komplett
Anpassning Custom checkin policies Notifieringar Processanpassning
Check-in policies Kontrollerar hur ändringar hanteras Konfigurerbart på projektnivå Utvärderas lokalt = måste installeras på klient Enkelt att skriva egna för specifika behov OBS: Knutna till specifik TFS version
Notifieringar TFS genererar events Lätt (?) att registrera notifiering Email eller Web Service Exempel Skicka mail när status på work item ändras Starta automatiskt bygge vid incheckning Skicka SMS när kritisk bugg rapporteras BisSubscribe.exe /eventtype WorkItemChangedEvent /deliverytype EmailHtml /server http://localhost:8080 /address mathias@win2003 /filter """"PortfolioProject""" = 'Effective VSTS' AND ("""ChangedFields/StringFields/Field[ReferenceName='System.State']/OldValue""" <> """ChangedFields/StringFields/Field[ReferenceName='System.State']/NewValue""")"
Processanpassning Hela TFS projektet kan anpassas Ärendehantering Rapporter Dokumentation Behörighet... Använd Process Template Editor
Klienter TFS är ett stort tält alla får plats Team Explorer Kommandorad MSSCCI Team System Web Access Teamprise
Nyheter i TFS 2008 Annotate Folder diff Destroy Get Latest vid utcheckning Prestandaförbättringar Skalbarhetsförbättringar Offline förbättringar
Nyheter i TFS 2008 Inbyggt stöd för Continuous Integration Schemalagda byggen Bättre UI för att skapa byggen Stoppa och ta bort byggen från UI Multitrådad byggnation Förenklad integration med enhetstester Bättre objektmodell i.net
Kompatibilitet 2005 / 2008 VSTS 2005 TFS 2005 VSTS 2008 TFS 2008
Team Build 2008 / 2005 Feature TFS2005 TFS2008 Feature TFS2005 TFS2008 Create Build Start / Queue Build View Build Definitions View Completed Builds View Queued Builds View Build Reports View Build Log Edit Build Quality Open Drop Folder Stop/Cancel Build Pass command line arg 5 5 8 5 8 5 8 5 8 5 8 5 8 5 8 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 8 Delete Build Definition Edit Retention Policy Edit Build Triggers Assign Build Agent (UI) Delete Build in UI Build.NET 2.0 project Build.NET 3.5 project Postpone Build Manage Build Qualities Manage Build Agents Edit workspace map 8 8 8 8 5 8 8 8 5 8 5 5 8 8 8 5 5 8 8 8 5 8 8 5 Visual Studio 2005 Team Explorer 8 Visual Studio 2008 Team Explorer
Team Foundation PowerTools Tillägg till TFS Innehåller Kommandoradsverktyg Visual Studio utökningar Build Notification Process Template Editor Team Foundation Server Best Practice Analyzer Work Item Templates Custom Checkin Policies
Kommandoradsverktyg Annotate DestroyWI DestroyWITD GetCS History Online Query Review Rollback Treeclean Treediff Unshelve Uu Workitem Workspace
Visual Studio utökningar Find in source control Open folder in Explorer Quick label
Custom Checkin Policies Custom Path Koppla annan policy till gren i källkoden Forbidden Patterns Changeset Comments Work Item Query OBS: Knutna till specifik TFS version
Alternativ till TFS Administration Enkelhet SVN Atomära incheckningar Visual Source Safe Skalbart Integration Subversion Prestanda PVCS Analys Åldrande lösning Perforce ClearCase Distribution Omogna verktyg
Agenda Introduktion Källkodshantering med TFS Scenarios för migrering Byggautomatisering
Planering inför migrering Hur ser det ut idag? Vad fungerar bra? Vad kan förbättras? Hur hanteras källkod? Ny kodstruktur? Behov av uppstädning? Framtida behov?
Scenarios för migrering Nystart Migrering Samexistens Till TFS från... VSS Subversion CVS ClearCase
Nystart 1. Analysera befintlig kod 2. Exportera och frikoppla från repository 3. Rensa orginalkod Ta bort filer relaterade till befintlig källkodshanterare Add to source control före drag-and-drop 4. Strukturera om till lämplig målstruktur 5. Importera main branch till TFS 6. Skapa branchstruktur 7. Synkronisera branches mot exporterad kod 8. Bygg och testa
Demo Importera källkod till TFS
Migrering 1. Analysera befintlig kod 2. Migrera main branch till TFS 3. Skapa branchstruktur i TFS 4. Checka ut nya branches 5. Migrera branches till TFS 6. Checka in ändringar 7. Bygg och testa
Samexistens Källkod synkroniseras mellan repositories Definiera regler för synkronisering Manuell, schemalagd, händelsestyrd Utmaning att hantera konfikter CS-Converter http://www.componentsoftware.com/products/ Converter MigrationSyncToolkit http://www.codeplex.com/migrationsynctoolkit
Visual Source Safe TFS funktioner VSS saknar Workspaces Changesets Shelvesets Content Merge, Namespace Merge (branch) Auditing Locking Atomic checkins VSS funktioner som TFS saknar Share (but has much better support for parallel development) Pin Archive and Restore Shadow folders
VSSConverter Konverterar automatiskt (med historik) Add, delete, undelete, rename, edit, label, move Tar inte hand om Share, branch, pin, källkodsbindning Tidsstämplar lagras i kommentar Relaterade händelser i samma changeset Körs i två steg Analys Migrering
Hantering av VSS händelser VSS händelse Add Edit Label file Label folder Rename, delete, undelete Move folder Share Branch Archive/Restore Pin/unpin TFS Skapas i TFS Ny version i TFS Label appliceras på motsvarande version som den i VSS. Label appliceras på motsvarande version av folder och senaste version av filer i den. Ny version i TFS Ny version i TFS. Kan orsaka problem men rapporteras av analys. Motsvarighet saknas. Version skapas i destinationsfolder med samma innehåll. Har föregåtts av en share i VSS. Version skapas i TFS för branchade versioner. Ignoreras Motsvarighet saknas. Labels skapas, PINNED_LATEST och PINNED.
Migreringsprocess Förkrav Förbered migrering Analys Konvertering
Förkrav Medlem av Team Foundation Administrators Installera SQL Express på dator som kör konvertering OBS: SQL Express hanterar max 4GB. SQL Server kan användas men kräver uppstättning i migreringsfil. Måste vara system administratör för SQL Express Visual Source Safe 2005 på dator som kör konvertering Minst 5GB diskplats på SQL Server datorn
Förbered migrering Identifiera målstruktur i TFS Skapa Team Projekt i TFS Identifiera användare i TFS Skapa settings fil för mappning av strukturer Skapa users fil för mappning av användare Skapas tom efter analys
Settings.xml VSSDatabase: pekar ut VSS databas ProjectMap Project Settings Source: VSS folder att analysera Output: resultatfil från analys
Analys settings.xml exempel <?xml version="1.0" encoding="utf-8"?> <SourceControlConverter> <ConverterSpecificSetting> <Source name="vss"> <VSSDatabase name="\\server\vss"></vssdatabase> </Source> <ProjectMap> <Project Source="$/FolderA"></Project> <Project Source="$/FolderB"></Project> </ProjectMap> </ConverterSpecificSetting> <Settings> <Output file="analysis.xml"></output> </Settings> </SourceControlConverter>
Analys Kör VSSConverter Analyze settings.xml Resultatfil i xml, innehåller stylesheets så öppnas i browser för bästa resultat Rapportern innehåller summering, lista på kritiska fel, fel och varningar
Usermap.xml Skapas under analysen och innehåller alla konton som påträffats Ej mappade konton sätts till samma namn i TFS Tips: koppla guest i VSS till Windows gästkonto för att inte tappa historik <?xml version="1.0" encoding="utf-8"?> <UserMappings> <UserMap From="Admin" To="domain\tfsservice"></UserMap> <UserMap From="guest" To="domain\guest"></UserMap> <UserMap From="Mathias" To= mathias"></usermap> </UserMappings>
Settings.xml VSSDatabase: pekar ut VSS databas UserMap: fil med användarmappning ProjectMap Project Settings Source: VSS folder att migrera Destination: TFS projekt och folder TeamFoundationServer: TFS att migrera till Output: resultatfil från migrering
Migrering settings.xml exempel <?xml version="1.0" encoding="utf-8"?> <SourceControlConverter> <ConverterSpecificSetting> <Source name="vss"> <VSSDatabase name="\\server\vss"></vssdatabase> <!-- option för att ange användarmappning --> <UserMap name="usermap.xml"></usermap> <!-- option för att ange annan SQL Server --> <SQL Server="SQL_Server_name"></SQL> </Source> <ProjectMap> <Project Source="$/FolderA" Destination="$/TeamProjectA"></Project> <Project Source="$/FolderB" Destination ="$/TeamProjectB/FolderB"></Project> </ProjectMap> </ConverterSpecificSetting> <Settings> <TeamFoundationServer name="my_tfs_server" port="8080" protocol="http"></teamfoundationserver> <Output file="migration.xml"></output> </Settings> </SourceControlConverter>
Migrering Kör VSSConverter Migrate settings.xml Motsvarande rapport som för analys produceras
VSSConverterGUI UI för hantering av xml filer Måste köras från samma folder som VSSConverter.exe Ännu ej uppdaterad för TFS 2008 Ladda ner från CodePlex http://www.codeplex.com/vssconvertergui
Demo Migrera VSS till TFS
Subversion CS-Converter från Component Software Komplett migrering Även branches Verifierar migrerade filer Återskapar changesets Mappning av användare Stödjer även synkronisering http://www.componentsoftware.com/products/ Converter/download.htm
Subversion SVN-2-TFS Migrerar komplett historik Hanterar branches Gränssnitt för mappning av användare http://www.kyrosoft.com/products.htm
CVS Migrera via SVN Relativt enkelt att migrera CVS till SVN CS-Converter från Component Software Direkt import till TFS
ClearCase Olikheter i synsätt/arbetssätt en utmaning Hitta lämplig branchstruktur i TFS CC skapar brancher dynamiskt Försök följa TFS branching best-practices Migreringsverktyg från Microsoft Migrerar VOBs Återskapar branchstruktur Använder en config spec för mappning För CC 5.0 och 6.0, stödjer inte CC LT http://www.microsoft.com/downloads/details.aspx?familyid=9992 20ed-3d11-411a-bb54-71dddb724e15&displaylang=en&tm
Agenda Introduktion Källkodshantering med TFS Scenarios för migrering Byggautomatisering
Byggautomatisering Byggautomatisering MSBuild Alternativ till MSBuild Team Build Alternativ till Team Build
Byggautomatisering är inte F5
Byggautomatisering är... Integration av utvecklingsarbetet Automatisera kompilering Köra tester Automatisk deployment Rapportering av resultat Genomförs kontinuerligt Vid varje inchecking Vid givna intervall
Byggautomatisering... Sparar tid Reducerar fel Ersätter dokumentation Byggautomatisering gör det enkelt att ta pulsen på projektet
MSBuild Utbyggbart byggsystem som är en del av.net Framework 2.0 Integrerat med Visual Studio 2005+ Använder XML för att beskriva ett projekts egenskaper, delar och byggprocess För detaljer: C:\WINDOWS\Microsoft.NET\Framework\v2.0. 50727\*.targets C:\WINDOWS\Microsoft.NET\Framework\v2.0. 50727\Microsoft.Common.Tasks
Alternativ till MSBuild NAnt FinalBuilder Visual Build
NAnt Styrkor Bättre än make/nmake Kräver inte Visual Studio Många.NET tasks Svagheter Manuell hantering av XML Omogna verktyg Svårunderhållet
nant
FinalBuilder Styrkor Visuell editering Lättanvänt Svagheter Propritär lösning
FinalBuilder
VisualBuild Styrkor Visuell editering Stöd för många aktiviter Bra integration Svagheter Propritär lösning Svårunderhållna script Procedurellt
VisualBuild
Team Build Automatiserad bygglösning Stödjer end-to-end byggnation Välintegrerad med TFS och Visual Studio Uppdaterar projekt nyckeltal Producerar rapporter Fullt utökningsbar
Byggautomatisering med TFS Trigger Build Publish Build Prepare Build Calculate Code Churn Get Sources Calculate Code Coverage Compile & Analyze Update Work Items Execute Tests
Demo Byggautomatisering med TFS BuildNotification
Alternativ till Team Build FinalBuilder Nant, CruiseControl.NET, CC.NET
FinalBuilder
CruiseControl.NET Open-source baserad automatiseringsserver Initialt porterad av Thoughworks Integrerar med många källkodshanterare, Nant, MSBuild, FxCop, NUnit, NCover
CruiseControl.NET
Migrering av byggprocess Nant MSBuild CruiseControl.NET TeamBuild CCTray BuildNotification CruiseControl.NET och TFS Samexistens genom TFSCCNetPlugin http://www.codeplex.com/tfsccnetplugin Resten får konverteras
Summering Utnyttja möjligheterna i Team System TFS är en komplett CM miljö Versionshantering en viktig del men inte allt Automatisera Bättre integration = mindre smärta Planera för migrering Vilket scenario passar bäst?
ALM Live Pågående initiativ kring förbättring av Application Lifecycle Management SCRUM och Team System 21/2 Stockholm 27/2 Malmö 28/2 Göteborg Senaste event finns på Svenska MSDN http://www.microsoft.com/sverige/msdn/almliv e/default.mspx
Frågor? Svar! Diskussion...
Referenser ALM Live http://www.microsoft.com/sverige/msdn/almlive/default.mspx Team System Web Access Team Foundation Power Tool MigrationSyncToolkit http://www.codeplex.com/migrationsynctoolkit CS-Converter http://www.componentsoftware.com/products/ Converter