Customizing and extending TFS Michael Juřek Software Architect Microsoft s.r.o.
Agenda Team Foundation Architecture Process Templates Work Item Types Source Code Control Build Portal and reports
Integrated Platform for Collaborating on Software Development Projects. Version Control Work Item Tracking Build Automation ProjectPortal Reporting Team Foundation Server
Team Logical Architecture Custom reporting tools MS Exce MS Projectl Team Foundation Data Tier Version Control Proxy Report Client Team Foundation Client Tier Core Data Version Control Work Items Team Build Data SQL Reporting Services Windows SharePoint Services SQL Reporting Services Windows SharePoint Services Work Item Tracking Service Version Control Service Team Build Service Core Services Warehouse Adapters Team Foundation App Tier WSS Proxies SQL RS Proxies Team Foundation Object Model MS Excel Plug-in MS Project Plug-in Visual Studio Packages Internet Explorer Build Process Version Control Proxy Service Build Machine
Customization Points Process Template Modify, build, or buy Work Item Types Modify or build Checkin Policy Modify or build Reporting Modify, build, or connect different report builders Project Portal Modify Sharepoint template Extend library folder structure, change or add doc templates
Extension Points Core services Add a new tool with new artifact types, link types, database, WS’s Link to other tools’ artifacts Raise, subscribe to events Integrate into Team Explorer Extend the Project Creation Wizard Work Item Tracking Write against OM Respond to events Link to Work Items Integrate with WI Picker Integrate with WI Form Support for custom controls in SP1 Source Control Write against OM Add new file type support Participate in integrated check-in Define new policy Respond to events Reporting Extend warehouse with your own data Build Add new Build tasks Create a checkin validation system
TFS Administration Tool Policy Override Notification Tool
Agenda Team Foundation Architecture Process Templates Work Item Types Source Code Control Build Portal and reports
Process Templates Project process blueprint Package of tool settings and templates Two included with Team Foundation Server MSF for Agile Software Development MSF for CMMI® Process Improvement Modify ours, handcraft your own, or buy
Process Template ProcessTemplate.xml Reports Work Items WorkItems.xml Bug.xml Template Definition Version Control VersionControl.xml Reports.xml BugTrends.rdl CustomWIType.xml Process Group References Anatomy of a Process Template
Process Template Project Lifecycle Phases and Iterations Exit Criteria Process Guidance Document Templates Work Item Types and Rules Bug, Task, Risk Work Packages (Scenario, Feature, Requirement) Work items Work Item Types (such as Defect, Requirement, Issue, Task, etc) Queries Work Item Instances/starter tasks Windows SharePoint Services Process guidance WSS Site Template WSS Library & Folder Structure Document templates and all files stored on the Project Portal Reports and their folder structure Default groups and their permissions Classifications: Areas and Iterations Source Control Settings
Process Template Editor
Process Template Editor
Agenda Team Foundation Architecture Process Templates Work Item Types Source Code Control Build Portal and reports
WIT customization Work Item Type Definition Fields, form, state transitions Found in two places: Process Template “Live” Team Project Scenarios Add enterprise specific work item types Modify existing work item type forms and rules TFS ships with pre-defined types TIP: Use as blueprint
Work Item Store Work Item Object Model WITXSD Work Item Type XML c:\ witimport c:\ witexport c:\ witimport /v Validate Notepad, Process Template Editor, … ImportExport VisualStudio Customizing Work Item Types
How severe the code defect is How severe the code defect is </WITD> Work Item Type Definition Name Fields Field Rules Work Flow States Transitions Field Rules Form
Work Item Type Fields Field reference names Think “column name” Use in your tooling Server scope Follow domain name convention Microsoft.TeamFoundationServer.WorkItemTracking.Foobar System.* reserved Field friendly names Think “column alias” Use in your queries Server scope Can be renamed, Title->Issue for example Field labels Appear on WI forms Localizable
Example WI State Diagram
witexport.exe / witimport.exe
WIT Security in TFS 2005 You can: Set permissions by project areas (in UI) Set permissions for a state transition of WI type (in WI type definition) Creating WI is also transition You can’t: Have item-level permissions Have field-level permissions
Agenda Team Foundation Architecture Process Templates Work Item Types Source Code Control Build Portal and reports
Source Control Gotchas Sharing and pinning are not supported Concurrent check-out by default Limited offline support No Get Latest on check-out Features only in command line Undo another user’s changes Features only in TFS Power Toys Rollback (but actually „Compensate“) Annotate (also in VS UI) TreeDiff (also in VS UI) Merge on Unshelve
“Missing” VSS features Branching and Merging is the recommended way but it is not direct equivalent Isolation between possibly breaking changes Mastering branching and merging is crucial Pinning Branching and merging enables any and all of the following scenarios: Promotion modeling, Pinning, Frequent Releases, Service Packs, etc. Sharing For VSS-style sharing, put common files in a common directory and use ‘Add as Link’ References with relative paths If shared files change often, share source code If shared files are DLLs, consider NOT sharing automatically 3 rd party products – e.g. TFSLinks (ComponentSoftware Inc.)
Check-in policies In the TFS box Work Items, Tests, Code Analysis Work Items highly recommended, others are usually impractically restrictive Custom: Easy - just derive from PolicyBase Warnings: Run on client, not server Easy to hack by a malicious user Collaboration tool, not security measure Only type names and parameters on server Need to deploy manually to clients
Team Foundation Power Toys Forbidden Patterns Policy Visual Studio 2005 SDK
Agenda Team Foundation Architecture Process Templates Work Item Types Source Code Control Build Portal and reports
Typical team build Initialization Build Server Preparation Source Code Synch. Code Churn Calculation Report Generation Publishing Work Items Update Code Coverage Calculation Compilation, Static Analysis Unit Tests
Customizing TFS Builds See walkthrough: Find the right task: MSBuild - us/library/7z aspx us/library/7z aspx TFS - us/library/ms aspx us/library/ms aspx Third-party (mostly freeware) See Build your own Find the right target (17 out of 35 provided):
Custom Build Task MSBuild Sidekick Team Build Sidekick
Agenda Team Foundation Architecture Process Templates Work Item Types Source Code Control Build Portal and reports
Project Portal Dependency on WSS: WSS must be installed before TFS installation You can remove WSS site creation from process template WSS Site per project New web parts can be added to the gallery Sharepoint templates can be modified or extended Initial content in Process Template You will typically see bug Q Contact local MS Support Services for fix
Reporting - High Level Architecture Adapter Work Item Tracking Version Control Team Build Team Test 3 rd Party Data Sources Adapter Team Foundation Relational Warehouse Team Foundation OLAP Warehouse OLAP Semantic Model Adapter Common Structures Report Builder Reports Report Designer Reports Excel Reports Report Designer: Precision Layout, Developer-built Report Builder: End-user ad-hoc charts and lists with drill-through Excel: Portable, familiar, exploratory analytical reports
Integrated Reporting * ******** * * * * ProjectStructureProjectStructureIterationStructureIterationStructure WorkItemWorkItem LabelLabelVersionedItemVersionedItem LatestItemVersionLatestItemVersionChangesetChangeset BuildBuildTestResultTestResult
Custom Report in MS Excel
Summary TFS is highly customizable and extensible products MSDN and Visual Studio 2005 SDK are your primary resources Many free and commercial 3 rd party tools
Questions???