ALM Live Flytta din källkod till Team Foundation Server Mathias Olausson Callista Knowledgebase mo@callista.se http://olausson.net/blog © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
För er som lämnar in utvärderingen Utlottning av böcker För er som lämnar in utvärderingen
Om... Mathias Olausson Callista Knowledgebase 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... TFS låter bra 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 Enhetstester i professional edition Förbättrad profiler för utvecklare Snabbare enhetstester Testning av ASP.NET AJAX Enkel uppgradering från 2005 Förenklad TFS installation Stöd för WSS 3.0, MOSS 2007, Windows 2008 Server, SQL Server 2008, 64-bit
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
Copyright © 2006 Notion Solutions, Inc.. All rights reserved. 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) Version Control Service VSTS Application Tier MSSQL/TCP SQL Server 2005 Copyright © 2006 Notion Solutions, Inc.. All rights reserved. This presentation is for informational purposes only. Notion Solutions makes no warranties, express or implied.
Funktioner Grundläggande funktioner Workspace Changeset Shelving Labels
Changeset Samlingsbegrepp för Atomär enhet Unikt identifierad 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 Skapar ett shelveset 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 Multipla utcheckningar 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 Bättre UI för att skapa byggen 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 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 Feature TFS2005 TFS2008 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 5 5 8 8 8 5 8 5 8 8 5 8 5 8 8 5 8 5 8 5 8 8 8 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 5 8 8 5 8 5 8 5 5 8 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
Atomära incheckningar Alternativ till TFS Skalbart Administration Visual Source Safe Subversion ClearCase Perforce PVCS SVN Integration Enkelhet Atomära incheckningar Prestanda Analys Distribution Åldrande lösning 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 Analysera befintlig kod Exportera och frikoppla från repository Rensa orginalkod Ta bort filer relaterade till befintlig källkodshanterare Add to source control före drag-and-drop Strukturera om till lämplig målstruktur Importera main branch till TFS Skapa branchstruktur Synkronisera branches mot exporterad kod Bygg och testa
Demo Importera källkod till TFS
Migrering Analysera befintlig kod Migrera main branch till TFS Skapa branchstruktur i TFS Checka ut nya branches Migrera branches till TFS Checka in ändringar 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) Tar inte hand om 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 TFS Add Skapas i TFS Edit Ny version i TFS Label file Label appliceras på motsvarande version som den i VSS. Label folder Label appliceras på motsvarande version av folder och senaste version av filer i den. Rename, delete, undelete Move folder Ny version i TFS. Kan orsaka problem men rapporteras av analys. Share Motsvarighet saknas. Version skapas i destinationsfolder med samma innehåll. Branch Har föregåtts av en share i VSS. Version skapas i TFS för branchade versioner. Archive/Restore Ignoreras Pin/unpin 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 Settings Source: VSS folder att analysera Settings 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 Source: VSS folder att migrera Destination: TFS projekt och folder Settings 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 CS-Converter från Component Software 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=999220ed-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 Svagheter 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 Svagheter Visuell editering Lättanvänt Propritär lösning
FinalBuilder
VisualBuild Styrkor Svagheter 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 Prepare Build Get Sources Compile & Analyze Execute Tests Update Work Items Calculate Code Coverage Calculate Code Churn Publish Build
Demo Byggautomatisering med TFS BuildNotification
Alternativ till Team Build FinalBuilder Nant, CruiseControl.NET, CC.NET
FinalBuilder
CruiseControl.NET Open-source baserad automatiserings- server 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 Automatisera 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/almlive/default.mspx
Frågor? Svar! Diskussion...
Referenser ALM Live Team System Web Access Team Foundation Power Tool 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