Have you ever customized VSTS/TFS and made it do something really awesome that wasn't possible in the out of the box experience? Have you ever created something so cool that you'd like to share it? Maybe even monetize it? Maybe you have an idea on how to better the experience in VSTS/TFS but don't know where to start? In this talk, we'll discuss the various ways you can make use of custom extensions in VSTS/TFS. We'll talk about what can be customized within an extension and what can't We'll go over some patterns for getting an extension up and running quickly as well as some tips and tricks on debugging extensions and getting them deployed.
1. Tulsa TechFest 2016
Extensions in VSTS and TFS
Friday, August 5th
Jeff Bramwell
VP – Enterprise Architecture, Farm Credit Services of America
MVP - Visual Studio & Development Technologies
jeff@moonspace.net ::: @jbramwell
4. Agenda
• Ways You Can Extend
• Custom Hubs
• Custom Widgets
• Custom Build Tasks
• Service Hooks
• More on the Marketplace
• Continuous Integration/Delivery
• Summary
10. Custom Hubs
• Requires an HTML page
• Requires a vss-extension.json manifest file
• Requires a reference to the VSS.SDK.js library
• Uses JavaScript and TypeScript (optional)
14. Custom Widgets
• Widgets are displayed on dashboards in VSTS/TFS
• Very similar to custom Hubs
• Requires an HTML page
• Require a vss-extension.json manifest file
• Requires a reference to the VSS.SDK.js library
• Uses JavaScript and TypeScript (optional)
17. Build Tasks
• Typically written in PowerShell and/or TypeScript
• Use TypeScript for cross-platform tasks
• Can also integrate .NET code if desired/needed
• Also requires a vss-extension.json manifest file
20. Service Hooks
• Built-in feature of VSTS/TFS
• Integrate with 3rd party services
• Can also integrate with custom services
• No coding required to integrate with existing services
21. Available Services
• AppVeyor
• Azuqua
• Azure App Service
• Azure Service Bus
• Azure Storage
• Bamboo
• Campfire
• Flowdock
• HipChat
• Hubot
• Jenkins
• MyGet
• Office 365
• Slack
• Trello
• UserVoice
• Web Hooks
• Zapier
• Zendesk
24. Visual Studio Marketplace
• Includes Visual Studio, VSTS and Visual Studio Code
• Public preview made available last November
• Hundreds (thousands?) of extensions available now
• Monetization is not yet available but is planned
• User reviews are available… author can also respond to reviews
• Can use web site and/or command line to publish
25. Continuous Delivery
• Published by Jesse Houwing (MVP)
• Publishes your extensions to Marketplace
• Can be shared with one or more accounts
• Can override version (task and extension)
• Can make public or private (several options)
27. Summary
• VSTS/TFS can be extended in many ways
• You can extend your automated builds as well as the web UI
• Customizations can make full use of existing REST APIs
• Build customizations can be Windows specific or cross-platform
• You can share your extensions in the Visual Studio Marketplace
• At some point you will be able to charge for them if desired
• Start here: http://bit.ly/VSTSExtensions
28. Questions? More
Information?
Extensions Reference for VS Team Services and TFS
• http://bit.ly/VSTSExtensions
Brian Harry (Product Unit Manager for TFS)
• https://blogs.msdn.microsoft.com/bharry/
My Blog
• http://blog.devmatter.com
Code/Extension Examples
• https://github.com/jbramwell/VSTS-Tools
29. Tulsa TechFest 2016 | Fri, Aug 5th, 2016 | OSU - Tulsa | 70+ Speakers, 20+ Tracks & 85+ Sessions!
Your input is important!
http://TulsaTechFest.com
Editor's Notes
External tools such as custom command-line tools, services etc.
Service Hooks can integrate with 3rd party services such as Trello, Slack, Office 365, Jenkins, HipChat and many others!
Build tasks allow you to customize the tasks within a build workflow.
Web UI integration allows you to provide your own UI elements within the VSTS/TFS web experience (e.g. hubs, widgets, work item extensions, etc.)
The JSON manifest contains metadata about the extension (e.g. name, ID, version, contributions, etc.)
The discovery assets contain the markdown that describes the extension (and is displayed in the Marketplace) along with related images
The static files apply only to contribution-based extensions (e.g. build tasks, widgets, etc.)
Talk about issues with using PUT when contracts have changed (e.g. adding a new field that calling clients are unaware of and the new field ends up being nulled out on updates)
With the exception of the two Admin hubs, the other hubs are scoped at the Project & Team levels.
Web Hooks is highlighted because it provides generic support for custom services (i.e. your own services that you want to hook into)
Slack is great for keeping an eye on multiple projects in VSTS/TFS. However, watch out for the number of messages being generated, especially if you’re on the free Slack plan!
More information:
https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/26/visual-studio-online-extensibility-and-marketplace/
https://blogs.msdn.microsoft.com/visualstudioalm/2015/11/18/announcing-public-preview-of-visual-studio-marketplace/
https://marketplace.visualstudio.com/items?itemName=moonspace-labs-llc.vsts-tools-build-extensions
https://marketplace.visualstudio.com/items?itemName=moonspace-labs-llc.vsts-md2wp-extensions
VSTS-Tools source code on GitHub: https://github.com/jbramwell/vsts-tools