Buck Hodges
Azure DevOps (formerly VSTS and Team Foundation Server)
Latest posts
VSTS: Lessons Learned Doing DevOps at Microsoft at Scale
Last week I gave a keynote on DevOps at VS Live! 2017 in Orlando. In this talk I cover four main things. The video is now online, and you can find the slides here. For more depth and topics on how we do DevOps with VSTS, go to aka.ms/LearnDevOps. Enjoy! Follow me at twitter.com/tfsbuck
Brand new office in North Carolina
Right after Thanksgiving we moved the North Carolina team to a brand new office in Morrisville, just two miles from our old location. We were at the previous location for more than 12 years. When we moved in there, we took the office space as it was. That meant a lot of randomly shaped offices of widely varying sizes. It served us well, but we were overcrowded with the expansion that had been happening over the last couple of years. We’ve now grown the VS Team Services team here to about 110 people, and we’re hiring more. For comparison, the TFS team in Redmond and NC combined was 130 people in the summer of 2012...
How to configure a TFS proxy to work with Team Services
If you are using Team Foundation Version Control (TFVC) with Visual Studio Team Services, you can configure the Team Foundation Server Proxy to cache files for version control for your account. It’s very straightforward as the TFS configuration app will do the work for you. Let’s take a look at how to do that. I’m going through this with TFS 2015 Update 3. It will be similar for newer versions of TFS. You will need to install the TFS Proxy on a server OS such as Windows Server 2012 R2. The entry point to configure the proxy in the TFS configuration UI will only show up when it is running on a server OS. If you ha...
Controlling exposure through feature flags in VS Team Services
One question that I often get from customers is how we manage exposing features in the service. Features may not be complete or need to be revealed at a particular time. We may want to get early feedback. With the team working in master and deploying every three-week sprint, let’s take a look at how we do this for Team Services. Goals Our first goal is decoupling deployment and exposure. We want to be able to control when a feature is available to users without having to time when the code is committed. This allows engineering the freedom to implement the feature based on our needs while also allowing control for...
TFS 15 RC2 is available and ready for production use
We have now released TFS "15" RC2. We are using it in production internally. It is fully supported for production use. You can upgrade from TFS 2012 or newer to RC2. You can also upgrade the RC1 release to RC2, and you will be able to upgrade from RC2 to RTM (that should be a very fast upgrade, since there will be very few changes between RC2 and RTM). Check out the Getting Started page as well as the Release Notes page, which also lists out the very long feature list. Here are the requirements links. Here are direct links to the downloads. I'd love to get as many servers using it as possible for folks to ...
Would you like SSH turned on for your Team Services account?
[Update 5/29/2016] We will be turning on SSH for all existing accounts once we finish deploying sprint 100 (hopefully by the end of this week). We are beginning to roll out SSH for Team Services accounts. If you would like SSH enabled for your account, please email me your account URL. We still need to implement support for brand new accounts (new accounts won’t work with SSH until DNS entries propagate, and we’re working on a solution to eliminate that delay), but it’s otherwise complete. We also have documentation for configuring SSH available. Follow me at twitter.com/tfsbuck
TFS 2015 Update 2: Gated checkin for the new build system (build vNext)
When we shipped the new build system with TFS 2015, we ran out of time to add gated checkin. A lot of customers depend on gated checkin for their workflows, and as a result they’ve been unable to move to the new build system. I’m happy to say we’ve now fixed that. Among the many features in TFS 2015 Update 2, including the new release management service and extensions, we’ve added support for gated checkin with Team Foundation Version Control (TFVC) for the new task-based build system (previously called build vNext to distinguish it from the old XAML-based build system). When you create a new build definition for...
How to create a team project in the web UI in TFS 2015 Update 2
You no longer have to use the version of Visual Studio Team Explorer that matches your server to create a team project. For the first time ever, you can now create a team project from the web UI with Team Foundation Server 2015 Update 2 or newer. This is something you’ve been able to do in Visual Studio Team Services for years, and we’ve finally added it to TFS. The entry point to create a team project is different in TFS right now and is hard to find for creating the first team project on a freshly installed server. This is something we’ll address in the future. When you install a fresh TFS server and connect to...
Using VS Team Services Web Hooks with Azure Functions
Today at the Build 2016 conference, Azure announced a new feature called Azure Functions. Here’s a quick description from the main page. Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in virtually any Azure or 3rd party service as well as on-premises systems. Azure Functions allows developers to take action by connecting to data sources or messaging solutions, thus making it easy to process and react to events. Azure Functions scale based on demand and you pay only for the reso...
Using Zapier to email work items to my backlog in VSTS
I use the board view of the backlog in my VS Team Services personal account to keep track of my work. I’ve wanted to be able to email a work item to my backlog, and today I finally got around to doing it. It was really easy thanks to our Zapier integration. I signed up for Zapier using the link on the Marketplace page, and that was great because after signing up it took me to a page where email integration was the first page. From there I just needed to tell Zapier my account name. I authorized Zapier to access my account. Finally, I had to pick the team project and type of work item. When you click on the dr...
Gated checkin for Git: Using Branch Policies to run a build in VSTS and TFS
Let’s start with what gated checkin is, which is a feature we shipped as part of TFS 2010. Gated checkin enforces that a change in a branch builds and optionally passes tests (and anything else you want to do as part of your build) before it is checked in and available to everyone else in the branch. The gated checkin process we shipped ensures that changes are evaluated sequentially: changeset N+1 has been built after and includes changeset N. We found internally that literally processing one changeset at a time was too slow for the volume of people we have in a branch, so we introduced batching to allow M chang...
Git Credential Manager is now installed by Git for Windows
Beginning with version 2.7.3, Git for Windows includes the Git Credential Manager (GCM) that makes authenticating with Visual Studio Team Services (VSTS) a breeze with both Microsoft Accounts (MSAs fka LiveIDs) and Azure Active Directory (AAD) identities. Since GCM is installed by default, you’ll get prompted for credentials when running git just like you would from VS. Follow me at twitter.com/tfsbuck
Tenth anniversary of Team Foundation Server
Today marks the tenth anniversary of shipping TFS 2005, which was our first version. We shipped nearly six months late – VS 2005 shipped in November 2005. The product has evolved an incredible amount since then. The most infamous part of the first version was how hard it was to install (we completely rewrote our setup in TFS 2010). We spent a little more than three years building the first version (I started as developer on TFVC in April 2003, and development had started just before that). There are a lot of products that never make it out the door – never make it to market – and lots of products that never surv...
Caching: What could go wrong?
There’s an old saying about regular expressions that I’ve always liked. I think it applies equally to caching. Here’s my version. Some people, when confronted with a performance problem, think “I know, I'll add a cache.” Now they have two problems. It’s so tempting to address a performance problem by adding a cache. After all, classes like Dictionary are very easy to use. Caching as a solution to the performance/latency/throughput problems means there is more complexity, which will lead to more bugs. Bugs with caches can be subtle and difficult to debug, and bugs with caches can also cause live site outage...
NuGet packages for TFS and Visual Studio Online .NET client object model
For the past couple of releases we’ve released the Team Foundation Server/Visual Studio Online client object model as a downloadable installer (aka MSI). Additionally, the license for it did not include the right to package it in an application for redistribution. As a result, it was inconvenient for builds and added friction for installing an app that depended on it (at least on machines without Visual Studio or Team Explorer). Additionally, the client libraries were installed into the .NET GAC in previous versions, which meant that you couldn’t have an application have its own copy of the client libraries – ins...
Fix: Windows 10 upgrade couldn’t update the system reserved partition
Disclaimer: This is what worked for me, and it’s not guidance from Microsoft. It may not work for you. Since this involves resizing partitions, it could wipe out all of your data. You may want to create a backup first. Proceed at your own risk. Over the weekend I upgraded my machines at home to Windows 10. I had two desktops and one Surface Pro (the first one) running Windows 8.1. Since I had multiple machines to upgrade, I downloaded the Windows 10 installer to a USB flash drive using the media creation tool mentioned on Download Windows 10. For me, the media creation tool wouldn’t recognize the USB drive, so I...
How we deploy Visual Studio Online using Release Management
**UPDATE April 25, 2017** This blog post describes our old deployment process. We now use VS Team Services Release Management to deploy VSTS. We use VS Release Management (RM) to deploy Visual Studio Online (VSO), and this post will describe the process. Credit for this work goes to Justin Pinnix, who’s been the driving force in orchestrating our deployments with RM. This documentation will help you get familiar with how RM works and how you can use it to deploy your own services, and you can find even more details in the user guide. Terminology First, let’s briefly cover some terminology. RM has the notion ...
Add, edit, rename, and delete files in the web browser with Visual Studio Online and TFS 2015
Back in the December 17th update, we added the ability to make changes to files in the web UI, and it works for both TFVC and Git. Edit is easy to find, since it’s right above the content on the screen. Add, rename, and delete are available through drop down menus. Let’s take a look at where those are. To add files, you need to click on the triangle beside the parent folder. In that same menu, you can also rename or delete the folder as well as download the folder as zip file. When adding files, I can either choose to create a new file, which will then take me to the editor in the browser, or I can upload ex...