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...
Original Surface RT is a great digital photo frame
I have four Surfaces: the original RT, Surface 2 RT, Surface Pro, and Surface 3. When I got the original Surface RT, which Microsoft gave to every full time employee shortly after it came out, I bought the Type keyboard and stopped using my iPad. The device was sluggish, though, particularly with Outlook. I bought a Surface 2 RT when it came out because it’s a much better machine (faster and even better display), and I carry it as a backup machine when I travel (I use my Surface 2 frequently). A couple of months ago, I bought a new digital photo frame (the one that I had died). The display on it wasn&rsquo...
Mainstream support for TFS 2010 ends in July
Time flies, and the end of mainstream support for Team Foundation Server 2010 is July 14th. Yep, we’re celebrating it on Bastille Day. If you are still using TFS 2010, now is a great time to upgrade to TFS 2013 Update 4. Also, our next public pre-release of TFS 2015 will be “go-live” (the current CTP is not), meaning you can use it in production.Follow me on Twitter at twitter.com/tfsbuck
Moving TFS to cloud cadence and Visual Studio Online
We get quite a few questions from customers on how we made the transition to shipping both an on-premises product and a cloud service. We moved from shipping every 2-3 years to shipping Visual Studio Online every three weeks and TFS every 3-4 months. You’ve probably seen the great set of vignettes at Scaling Agile across the Enterprise. It was also recently covered in a report from McKinsey and in an interview on Forbes.com. What’s missing is a deeper description of what changes we’ve made to how we work. A couple of years ago, we wrote document on how the team changed to meet the new deman...
Visual Studio Online reliability improvements
We’ve had a number of outages and other serious incidents in recent months. It’s clear we haven’t done enough to invest in reliability of the service, and I want to give you some insight into what we are working on that will be coming in January and beyond. First I want to give you a very brief description of the the Visual Studio Online (VSO) service topology. VSO consists of a set of scale units that provide services like version control, work item tracking, and load testing. Each scale unit consists of a set of Azure SQL Databases with customer data and virtual machines running the applicati...
How to add licensed users to VS Team Services via the API
How to provide non-admins access to activity and job pages
When we shipped TFS 2012, we introduced a feature in the web UI that makes it easy to look at the activity and job history. In the post I mentioned that you had to be an admin to be able to see the information. A question about this came up last week, and Sean Lumley, one of the folks who built the feature, pointed out there is a specific permission for this. The permission is called Troubleshoot and it is in the Diagnostic security namespace. These are not exposed in the web UI for setting permissions, so you have to use the tfssecurity.exe tool. Here’s an example command line that gives a TFS group call...
The ALS Ice Bucket Challenge
Yesterday, Brian took ALS Ice Bucket Challenge after being challenged by both Scott Guthrie and Adam Cogan. Brian then challenged me, James Phillips, and David Treadwell. I didn’t want to turn down a challenge from Brian. I happen to be in Redmond this week, so I thought why not do it with my team here. I mentioned it to Jessica, who is my great admin, and she then got a bunch of the DevDiv admins in on it (the level of excitement among the admins was through the roof). My whole day was booked, so I had no idea when I would do this. Then my 2 PM meeting got canceled. It was on! Then the admin team sent email to...
Ten years of blogging
This past week was the tenth anniversary of blogging here. Over that time I’ve written 560 blog posts. There’s clearly been a drop in my blogging frequency, unfortunately, in recent years. I’ve spent more time interacting with folks on Twitter over the last couple of years than on blogging because of the Visual Studio Online service. I started using Twitter to keep an eye on feedback and to look for problems that customers hit that we don’t know about (someday, I’d love that to be zero, but reality is that you can never have enough telemetry). I started at Microsoft in 2003, and whe...
Azure Portal Preview and Visual Studio Online: Adding a user
Today at the Build Conference, we showed a preview of the new Azure Portal, and that includes a preview of deep integration with Visual Studio Online. As with any preview, it has some rough edges and limitations. One of the limitations is that you have to create a new Visual Studio Online account through the new Azure Portal Preview. Your existing account will not work right now. All new accounts created through the new portal will be backed by Azure Active Directory. In the near future we will provide an experience to convert your existing Visual Studio Online account. This also means that adding a user is diff...
Patch for issue with Visual Studio 2013 Queue Build dialog
In Visual Studio 2013 and Team Explorer 2013 there is a bug that will cause the “What do you want to build?” combo box to be disabled and the entire Parameters tab to be blank. We have now released a patch to fix this bug: KB 2898341. This bug occurs when using VS or TE 2013 with a TFS 2013 server. We introduced the bug at the very end of the release when we made a performance optimization for builds on the server used by the Developer Division.Follow me on Twitter at twitter.com/tfsbuck
Visual Studio and Team Explorer 2013 no longer require IE 10 for installation
When Visual Studio 2013 and Team Explorer 2013 were originally released, the installation process required that Internet Explorer 10 or newer was installed. Today we released updated installers that no longer require IE 10. You will get a warning at the beginning of your installation that looks like the screen shot below. For VS 2013 there is a KB article titled Visual Studio 2013: Known issues when IE10 is not installed that describes what the limitations are if you don’t have IE 10 or newer installed (the “some features” link in the dialog takes you to that KB article). The good news is that there aren’t many...
Updated Team Foundation Server 2013 download addressing web and installation path issues
Today we have updated the TFS 2013 installation packages both on the web download page and in MSDN subscriber downloads. The reason is that we found two bugs that we wanted to address broadly. We’ve made changes to be able to catch these types of issues in the future. Here are details on the two fixes. Fixed: Red error box when using Code (version control) in the web UI In the case of upgrading from a prior version of TFS to TFS 2013 RTM, you will see a big error box that says “Error in the application” when using the Code section in the web UI (for example, viewing History). The reason is that we had a b...
Git and HTTPS with TFS 2013
Philip Kelley has written a great blog post that explains using HTTPS with Team Foundation Server 2013. In it he explains basic auth and Windows auth among other things. If you are using a self-signed certificate, the post will tell you how to add it to your client so that git.exe will work. Git network operations in Visual Studio 2013 Visual Studio 2013 includes in-the-box support for Git version control. That support includes the ability to perform Git network operations from inside of Visual Studio, such as cloning a repository, or performing a fetch, push, or pull operation on an existing repository. ...
How to fix an error with the Windows 8.1 upgrade utility
I had gotten a Windows 8 upgrade key with the purchase of a computer last summer. I hadn’t used it, so I wanted to upgrade a desktop my family uses. I ran the utility WindowsSetupBox.exe that you can download from the Upgrade Windows with only a product key page. However, it failed quickly after choosing either to run the upgrade or to download it to media. I didn’t write down the error message, but it wasn’t very descriptive – it just said that something went wrong. It failed so quickly, it seemed like it wasn’t really trying. So I downloaded SysInternals’ Process Monitor in...
What’s installed on the build machine in Visual Studio Online?
If you are using Visual Studio Online and wondering what’s installed on the build machine for your builds to use, we have a list here. Tarun Arora, one of our MVPs, put together a web site that shows a comprehensive list of what’s installed: http://listofsoftwareontfshostedbuildserver.azurewebsites.net/.Follow me on Twitter at twitter.com/tfsbuck
Team Foundation Service 2013 RC is go-live–use it in production
Have you upgraded to TFS 2013 RC yet? It’s a supported, “go-live” release that you can use in production. We are using it ourselves in production our biggest internal server (I’ve written about that server before). Download TFS 2013 RC and upgrade. You can check out what’s new here (hint: the background image at the top of that page shows off the new work item charting feature). One thing I want to point out is that Internet Explorer 8 is not supported for TFS 2013. You can use IE 8 (we don’t block it), but you may encounter problems, and the issues will get worse moving for...
How to delete a team project from Team Foundation Service using the web UI
[Update 18 Nov. 2013] It is now easier to get to the UI to delete a project. Navigate to the home page for your team project, then click on the gear icon in the upper left, and then you can click on the drop down arrow that will show up when you mouse over the name of the team project. You now have the ability to delete a team project from TF Service using the web UI rather than the command line (the command line still works, and you can find the instructions here if you need them). Unfortunately, this only applies to the service. In the future, we plan to have both team project creation and deletion be availabl...
Team Foundation Server 2012.2 (aka Update 2) now available
Today we released the second update for TFS 2012 (TFS, TFS Express). You will find a detailed list of features in this blog post. You need to install the one that matches your installation – full or express. You do not need to uninstall TFS 2012 RTM or TFS 2012 Update 1. Installing TFS 2012.2 will take care of uninstalling your previous TFS 2012 installation and then installing the new version. You also do not need to detach collections or anything else special. As always, you should make a backup of your server prior to upgrade (you do make and test backups regularly, right?). In this update, we preserve ...