Announcing a Build Service for Team Foundation Service
Today in my VS Live keynote, I announced and demonstrated a new cloud based build service for our Team Foundation Service on Azure. From the beginning with tfspreview, you’ve been able to do builds, but – you had to install, manage, patch, etc the build machines yourself. With this new service, we’ve made it possible to skip that and just use a pool of build machines that we manage in the cloud (though you can still install and manage build machines if you like). And, of course, you can do more than just build – like with on-premises TFS, you can run a default workflow that includes, compilation, testing, etc or you can create a custom workflow that does whatever you like. This represents the next step in getting your project/team started and productive in the shortest time possible.
Our new build service works by maintaining a pool of Azure VM roles that can expand and shrink as needed. When you start a build, a VM is allocated from the pool to run your build. Your build is run, the build output is copied off the build machine then the VM is restored and it is returned back to the pool for someone else to use.
After my announcement today, we will be enabling the new build service for all new and existing accounts on Team Foundation Service. It will take a few hours to enable them all but you should expect to see it available on your account by early afternoon. If you don’t have an account but would like to try it out, you can request access.
Click Create Account
If you have an invitation code (you can get one from someone who already has an account), you can just sign up or, if not, click the “Click here to register” link and it will take you to a page where you can leave an email address. How much demand we see will influence how fast we send out new invitation codes. We’ve been fulfilling them within 1 to 2 weeks and I hope we can continue at that rate.
Using Team Foundation Service
Using Team Foundation Service is very much like using an on-premises TFS server – it looks the same from Visual Studio (or Team Explorer Everywhere in Eclipse, for that matter). The only difference is that you use LiveID to login rather than a Windows login. Once you are in, it’s transparent to you. This includes the new build service. You can create a new build definition, queue a build, etc the same way you would if you managed the infrastructure. The one difference is that you need to pick the “Hosted Build Controller” in your build definition rather than a local build controller.
And (because we don’t have UNC shares in the cloud), you configure the build output local (Staging location) to be a path in version control ($/BuildsTests/Drops) in the example above. I’m not sure we’ll continue to have version control be the only drop location for the service but for now, it was an easy solution that provides an efficient place that is secure and easy to manage. In addition it enables you to use the Team Foundation Server Proxy locally to improve download speeds for teams. Build retention policies still work and will clean up old, unwanted drops.
The Build VM Image
The only major limitation is you don’t control the build machine. That simply means that if you have an external dependency in your project that is not in the default VM image, you will either need to check it in, enable your solution to download it from a public NuGet feed, or install it as part of your custom workflow.
The exact set of supported frameworks will continue to be refined, however with this release we have the following installed on the build image:
- Visual Studio 2010 SP1
- Visual Studio 11 Beta
This should allow you to build any of the project types that ship in the box for both of these releases with the exception of Windows Metro Style applications in VS 11. Once we have support for Windows 8 in Azure, we’ll add that additional support. This is just a starting place – a minimalistic one, and we’ve very interested in your feedback on what you’d like to have us install on the image by default.
In the near future, we will also enable Java builds. It’s possible today but a bit manual. The problem is that, by default, Java builds use the upgrade template and we haven’t added support for the new version control drop locations to that template yet. So, if you really want to get a Java build working on the cloud, then you can customize the default build workflow to enable Java builds – that’s what our Team Explorer Everywhere team has done. They’ve been using Team Foundation Service for their development for months – including cloud based builds for the past several weeks.
As I mentioned above, the new build service does more than just compile. The default workflow supports unit testing (and you can modify the workflow to do almost anything you like). If you want to use the unit test frameworks in the box – MSTest or the new native C++ unit test framework, you can just checkin your tests and, by default, the build service will pick them up and run them as part of your build. The test results will be included in the build report.
You can also use any of the newly supported 3rd party Unit Testing Frameworks in VS 11 – XUnit, NUnit, etc. There’s a bit more configuration there so I encourage you to keep an eye on the Visual Studio ALM blog for more detail.
The new build service works seamlessly with the recent VS 11 Beta. In addition, last week, I blogged about a patch for the VS 2010 client that enables it to work with the new build service (though I didn’t mention that in the post because we hadn’t announced the new service yet ). The Team Explorer Everywhere client that includes Eclipse support will also support the new build service. And lastly, stay tuned for an update to VS 2008 that will enable Team Foundation Service support.
Team Foundation Service is still a pre-release offering. We’re working very hard on it and you should stay tuned to a lot more improvements in the coming months. We are releasing new capabilities to the service about every 3 weeks. In one of our recent updates, we changed our Terms of Service to more clearly express that the service can be used to “go-live” production projects and not just test and experimentation.
I hope you like the new build service and I look forward to hearing any feedback you have.