What’s brewing in Visual Studio Team Services: December 2017 Digest

Posted on December 7, 2017

Director of Engineering, VS Team Services

This month I have a lot to cover. Since my last post, we’ve shipped three sprints of features, and we had a very successful Connect(); event in November. Let’s dive right in.

Connect();

The Connect(); conference highlights developer tools like Visual Studio Team Services (VSTS) and the rest of the Visual Studio family of products. It’s an event full of news and training about software development and DevOps, and if you missed the live stream, the DevOps and Visual Studio Team Services (VSTS) sessions are all available to watch on-demand.

Brian Harry’s general session discussed the state of Azure DevOps and included some exciting announcements including new easy-to-setup Azure DevOps Projects, TFS 2018 availability, hosted Mac build agents (in addition to Linux and Windows), a partnership with GitHub to expand the scope of GVFS beyond just VSTS, and many more. You can read Brian’s blog post on Connect(); announcements for a summary and watch the video of his presentation.

DevOps at Microsoft

Recently we did an extensive series of presentations on how have adopted DevOps and operate VS Team Services at scale. Topics include planning, architecture, testing, live site, and more in depth on DevOps at Microsoft. Also, I recently gave a keynote at the VS Live! conference on Lessons Learned Doing DevOps at Microsoft at Scale. In an hour, I cover key lessons we’ve learned using feature flags to control exposure, improving resiliency using circuit breakers, managing live site and pursuing root cause, and transforming our tests to be fast and reliable. And if you still want more, you can find our DevOps presentations from Ignite 2017 here.

Azure DevOps Project

The new Azure DevOps Project makes it easy to get started on Azure. It helps you launch an app on the Azure service of your choice in a few quick steps. DevOps Project sets you up with everything you need for developing, deploying and monitoring your app.

Creating a DevOps Project provisions Azure resources and comes with a Git code repository, Application Insights integration, and a continuous delivery pipeline set up to deploy to Azure. The DevOps Project dashboard lets you monitor code commits, builds, and deployments from a single view in the Azure portal.

Key benefits of a DevOps Project:

  • Get up and running with a new app and a full DevOps pipeline in just a few minutes
  • Support for a wide range of popular frameworks such as .NET, Java, PHP, Node, and Python
  • Start fresh or bring your own application from GitHub
  • Built-in Application Insights integration for instant analytics and actionable insights
  • Cloud-powered CI/CD using Visual Studio Team Services (VSTS)

DevOps Projects are powered by VSTS and gives you a head start in developing and deploying your applications. See the documentation for deploying to Azure for more information.

Azure DevOps Project

Configuration as code (YAML) builds in Public Preview

When you define a CI build on VSTS, you’ve now got a fundamental choice: use a web-based interface or configure your CI process as code in a YAML build. YAML build definitions give you the advantages of configuration as code.

Why should you care? Have you ever run into build breaks or unexpected outcomes caused, not by changes to your app, but by changes in your build process?

A YAML build definition follows the same branching structure as your code. So you get validation of your changes through code reviews in pull requests and branch build policies. This way you can much more easily identify and fix (or avoid) this kind of problem because the change is in version control with the rest of your code base.

See Chris Patterson’s blog post for his perspective on YAML builds, including how we went about making decisions on how this feature works.

NOTE: To use this capability, you must have the Build Yaml definitions preview feature enabled on both your profile and account.

You can try it right now. Just add a new file called .vsts-ci.yml to the root of your Git repo in VSTS. Then put this in the file:

queue: Hosted VS2017
steps:
- script: echo hello world

After you commit the changes, a build definition is automatically created and queued! Ready to go beyond “hello world”?

Hosted Mac agents for CI/CD pipelines in Public Preview

VSTS now has cloud-hosted CI/CD agents running on macOS. This allows building and releasing Apple apps in the cloud (including iOS, macOS, tvOS, and watchOS), eliminating the need for providing and maintaining your own dedicated Mac hardware. VSTS now offers hosted CI/CD agents running on three operating systems – Linux, macOS, and Windows. For more information, see Hosted agents.

To use the hosted macOS agents, select Hosted macOS Preview for your build or release pipeline:

Hosted Mac

Agentless build tasks

Your build process is defined by the tasks it performs. Until now, all these tasks were running on an agent, either a hosted agent we provide or on your own private agent. There are some common tasks where an agent is not needed. For example, when you want to call a REST API, or to have the build pause for a period of time.

We’ve added some agentless build tasks to the catalog:

You can add an agentless phase to your build definition and then add one of these tasks to run it on VSTS.

You can also extend and add your own agentless tasks, but there are some restrictions:

  • Agentless tasks cannot run scripts.
  • You must select one of the pre-defined execution handlers: HttpRequest handler to call an HTTP endpoint, or ServiceBus handler to post a message on the Azure service bus.

For examples on how to create such tasks, see the InvokeRestAPI and PublishToAzureServiceBus tasks.

Release gates in Public Preview

Continuous monitoring is an integral part of DevOps pipelines. Ensuring the app in a release is healthy after deployment is as critical as the success of the deployment process. Enterprises adopt various tools for automatic detection of app health in production and for keeping track of customer reported incidents. Until now, approvers had to manually monitor the health of the apps from all the systems before promoting the release. However, Release Management now supports integrating continuous monitoring into release pipelines. Use this to ensure the system repeatedly queries all the health signals for the app until all of them are successful at the same time, before continuing the release.

NOTE: To use this capability, you must have the Approval gates in releases preview feature enabled on your profile.

You start by defining pre-deployment or post-deployment gates in the release definition. Each gate can monitor one or more health signals corresponding to a monitoring system of the app. Built-in gates are available for “Azure monitor (application insight) alerts” and “Work items”. You can integrate with other systems using the flexibility offered through Azure functions.

Gated releases

At the time of execution, the Release starts to sample all the gates and collect health signals from each of them. It repeats the sampling at each interval until signals collected from all the gates in the same interval are successful.

Sampling interval

Initial samples from the monitoring systems may not be accurate, as not enough information may be available for the new deployment. The “Delay before evaluation” option ensures the Release does not progress during this period, even if all samples are successful.

No agents or pipelines are consumed during sampling of gates. See the documentation for release gates for more information.

Docker Hub or Azure Container Registry as an artifact source

This feature enables automatic creation of releases for updates to apps in the images stored in a Docker Hub registry or an Azure Container Registry (ACR). This is a first step towards supporting scenarios such as rolling out new changes region-by-region by using the geo-replication feature of ACR or deploying to an environment (such as production) from a container registry that has images for only the production environment.

You can now configure Docker Hub or ACR as a first-class artifact in the + Add artifact experience of a release definition.

Dockerhub artifact source

 

Use VSTS as a symbol server

VSTS Symbol Server enables you to host and share symbols with your organization. Symbols provide additional information that makes it easier to debug executables, especially those written in native languages like C and C++. See the documentation for publishing symbols for debugging for more information.

NOTE: To use this capability, you must have the Symbol server preview feature enabled on your account.

Symbol server task

Save packages from NuGet.org in your feed

NuGet.org as an upstream source is now available, which enables you to use packages from NuGet.org through your VSTS feed. Check out the announcement blog post to learn more.

NuGet upstream source

Filtering on Plans

The Delivery Plans extension now makes use of our common filtering component, and is consistent with our grid filtering experiences for work items and Boards. This filtering control brings improved usability and a consistent interface to all members of your team.

Filtering on Plans

Improved Azure Active Directory integration for pull requests

Adding Azure AD groups as reviewers for your pull requests just got a lot easier. Previously, before any AAD group could be added as a reviewer, that group needed to be granted explicit access to VSTS.

Now, AAD groups can be added as reviewers to PRs and both email notifications and voting rollups will work as expected -- without any additional configuration.

Path filters for pull request policies

Many times, a single repository will contain code that’s built by multiple continuous integration (CI) pipelines to validate the build and run tests. The integrated build policy now supports a path filtering option that makes it easy to configure multiple PR builds that can be required and automatically triggered for each PR. Just specify a path for each build to require, and set, the trigger and requirement options as desired.

Path filters for PR policies

In addition to build, status policies also have the path filtering option available. This will allow any custom or 3rd party policies to configure policy enforcement for specific paths.

Mention a pull request

You can now mention pull requests in PR comments and work item discussions. The experience for mentioning a PR is similar to that of a work item, but uses an exclamation point ! instead of a hash mark #.

Whenever you want to mention a PR, enter a !, and you’ll see an interactive experience for picking a PR from your list of recent PRs. Enter keywords to filter the list of suggestions, or enter the ID of the PR you want to mention. Once a PR is mentioned, it will be rendered inline with the ID and the full title, plus it will link to the PR details page.

Mention a pull request

TFS Database Import Service now Generally Available

We’re announcing the general availability of the TFS Database Import Service. The Import Service enables customers to migrate from their on-premises Team Foundation Server (TFS) and into our cloud hosted SaaS service Visual Studio Team Services (VSTS).

Customers now no longer require approval from Microsoft to onboard and begin their migrations. Find out more information and get started here.

VSTS CLI in Public Preview

VSTS CLI is a new command line interface for working with and managing your VSTS and TFS projects from Windows, Linux, and Mac. This new open source CLI lets you work with pull requests, work items, builds, and more from the comfort of a command prompt or terminal. You can also use the new CLI to automate interactions with VSTS or TFS using scripts written in Bash, PowerShell, or your favorite scripting language.

Here are just some of the things you can do with VSTS CLI:

  • Queue a build
  • Show the details of a build
  • Create a pull request
  • Add a reviewer to a pull request
  • Create a new project or Git repo
  • Update a work item

To learn more, see the VSTS CLI docs. To view the source, visit the vsts-cli repo.

Search for code in multiple branches

In code search we have enabled support to index multi-branches. This will allow you to search in branches other than the default branch. You can now have 5 more branches per repository indexed for searching. Your Project Admin can configure the additional branches from the Version Control settings page:

New multi-branch configuration experience

Wiki Search

Over time as teams document more content in wiki pages across multiple projects in VSTS, finding relevant content becomes increasingly difficult. To maximize collaboration, you need the ability to easily discover content across all your projects. Now you can use Wiki Search to quickly find relevant wiki pages by title or page content across all projects in your VSTS account.

NOTE: To use this capability, you must have the New experience in Code & Work Item search and new Wiki search preview feature enabled on your profile.

Wiki Search

Extension of the Month: SenseAdapt by RippleRock

This extension provides a toolset for agile teams to quickly and seamlessly create actionable insight charts without any additional configuration of their account. Some of the top scenarios supported by SenseAdapt are

  • Forecast likely project completion dates and engage stakeholders with simpler, actionable visualizations
  • Give teams the situational awareness to do their job. Help them focus and stimulate improvement with simple visualizations of their work and the system around them
  • Enable governance to base decisions on objective insight, whilst seeing options to influence outcomes
  • Deliver more value by embedding Agile principles of; transparency, visualization, frequent data-based feedback loops
  • Clear, simple oversight with most of the SAFe project metrics

Your team will be able to leverage 12 visualization that take minutes to create without any additional configuration and can be created based on your team’s different roles and objectives. You can install it here.

Creating Work Item Extensions

Speaking of extensions, if you’ve ever wanted to write your own extension for work items, you’ll enjoy this comprehensive blog post on creating work item form extensions. It walks you through the process in detail and helps you understand exactly what you’ll need to do to build your extension.

VSTS in Hong Kong

In 2014, we set a goal to make Visual Studio Team Services (VSTS) a global service. This is driven by our commitment to provide our customers around the world great performance and compliance with local data sovereignty requirements. Between 2014 and 2016 we announced VSTS instances in Europe, Australia, India, and Brazil. Two months ago we announced a new VSTS instance in Canada. Along the way we have also stood up four additional instances in the United States and another additional instance in Europe to handle the large number of accounts created in those geographies.

Today we are excited to announce the availability of our latest VSTS instance in Hong Kong (Azure’s East Asia region).

When you create a new account we default the region to the one closest to you. Customers near Hong Kong will now notice that East Asia is the default selection. As always, you can override the selection by choosing another region from the list – East Asia is open to everyone. If you have an existing Visual Studio Team Services account and would like to move it to the new East Asia region, you can do that by contacting support.

If a region important to you does not yet have a VSTS instance, let us know about it on UserVoice. And keep an eye out here for additional announcements as we continue to increase the global presence of VSTS.

Wrapping Up

As always, there’s a lot more than I can cover here. I’d encourage you to read over the full release notes for the October 6th, October 30th, and November 28th sprint deployments. Be sure to subscribe to the DevOps blog to keep up with the latest plans and developments for VSTS.

Happy coding!

@tfsbuck