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

Visual Studio Team Services offers the best DevOps tooling to create an efficient continuous integration and release pipeline to Azure. This month we’ll take a look at support Git forks, multi-phase builds, work hub improvements, new reporting widgets, and an updated NDepend extension. Let’s get started with our first look at forking in VSTS.

Forks preview

Preview feature

This capability is enabled through the Git Forkspreview feature on your account.

You can now fork and push changes back within a VSTS account! This is the first step on our journey with forks. The next step will be to enable you to fork a repository into a different VSTS account.

A fork is a complete, server-side copy of a repository, including all files, commits, and (optionally) branches. Forks are a great way to isolate experimental, risky, or confidential changes from the original codebase. Once you’re ready to share those changes, it’s easy to use pull requests to push the changes back to the original repository.

Using forks, you can also allow a broad range of people to contribute to your repository without giving them direct commit access. Instead, they commit their work to their own fork of the repository. This gives you the opportunity to review their changes in a pull request before accepting those changes into the central repository.

A fork starts with all the contents of its upstream (original) repository. When you create a fork, you can choose whether to include all branches or limit to only the default branch. None of the permissions, policies, or build definitions are applied. The new fork acts as if someone cloned the original repository, then pushed to a new, empty repository. After a fork has been created, new files, folders, and branches are not shared between the repositories unless a PR carries them along.

You can create PRs in either direction: from fork to upstream, or upstream to fork. The most common direction will be from fork to upstream. The destination repository’s permissions, policies, builds, and work items will apply to the PR.

Create a folder in a repository using web

You can now create folders via the web in your Git and TFVC repositories. This replaces the Folder Management extension, which will now undergo the process of deprecation.

To create a folder, click New > Folder in either the command bar or context menu:

Wiki page deep linking

Wiki now supports deep linking sections within a page and across pages, which is really useful for creating a table of contents. You can reference a heading in the same page or another page by using the following syntax:

Preview content as you edit Wiki pages

Data shows that users almost always Preview a wiki page multiple times while editing content. For each page edit, users click on Preview 1-2 times on average. This can be particularly time-consuming for those new to markdown. Now you can see the preview of your page while editing.

Paste rich content as HTML in Wiki

You can now paste rich text in the markdown editor of Wiki from any browser-based applications such as Confluence, OneNote, SharePoint, and MediaWiki. This is particularly useful for those who have created rich content such as complex tables and want to show it in Wiki. Simply copy content and paste it as HTML.

Multi-phase builds

Modern multi-tier apps often must be built with different sets of tasks, on different sets of agents with varying capabilities, sometimes even on different platforms. Until now, in VSTS you had to create a separate build for each aspect of these kinds of apps. We’re now releasing the first set of features to enable multi-phase builds.

You can configure each phase with the tasks you need, and specify different demands for each phase. Each phase can run multiple jobs in parallel using multipliers. You can publish artifacts in one phase, and then download those artifacts to use them in a subsequent phase.

You’ll also notice that all of your current build definitions have been upgraded to have a single phase. Some of the configuration options such as demands and multi-configuration will be moved to each phase.

We’re still working on a few features, including:

Ability to select a different queue in each phase.

Ability to consume output variables from one phase in a subsequent phase.

Ability to run phases in parallel. (For now, all the phases you define run sequentially).

CI builds for Bitbucket repositories

It's now possible to run CI builds from connected Bitbucket repositories. To get started, set up a service endpoint to connect to Bitbucket. Then in your build definition, on the Tasks tab select the Bitbucket source.

After that, enable CI on the Triggers tab, and you’re good to go.

This feature works only for builds in VSTS accounts and with cloud-hosted Bitbucket repositories.

Release template extensibility

Release templates let you create a baseline for you to get started when defining a release process. Previously, you could upload new ones to your account, but now authors can include release templates in their extensions. You can find an example on the GitHub repo.

Conditional release tasks and phases

Similar to conditional build tasks, you can now run a task or phase only if specific conditions are met. This will help you in modeling rollback scenarios.

If the built-in conditions don’t meet your needs, or if you need more fine-grained control over when the task or phase runs, you can specify custom conditions. Express the condition as a nested set of functions. The agent evaluates the innermost function and works its way outwards. The final result is a boolean value that determines if the task to be run.

Personalized notifications for releases

Release notifications are now integrated with the VSTS notification settings experience. Those managing releases are now automatically notified of pending actions (approvals or manual interventions) and important deployment failures. You can turn off these notifications by navigating to the Notification settings under the profile menu and switching off Release Subscriptions. You can also subscribe to additional notifications by creating custom subscriptions. Admins can control subscriptions for teams and groups from the Notification settings under Team and Account settings.

Release definition authors will no longer have to manually send emails for approvals and deployment completions.

This is especially useful for large accounts that have multiple stakeholders for releases, and those other than approver, release creator and environment owner that might want to be notified.

Branch filters in release environment triggers

In the new release definition editor, you can now specify artifact conditions for a particular environment. Using these artifact conditions, you will have more granular control on which artifacts should be deployed to a specific environment. For example, for a production environment, you may want to make sure that builds generated only from the master branch are deployed. This filter needs to be set for all artifacts that you think should meet this criteria.

You can also add multiple filters for each artifact that is linked to the release definition. Deployment will be triggered to this environment only if all the artifact conditions are successfully met.

Gulp, Yarn, and more authenticated feed support

The npm task today works seamlessly with authenticated npm feeds (in Package Management or external registries like npm Enterprise and Artifactory), but until now it’s been challenging to use a task runner like Gulp or an alternate npm client like Yarn unless that task also supported authenticated feeds. With this update, we’ve added a new npm Authenticate build task that will add credentials to your .npmrc so that subsequent tasks can use authenticated feeds successfully.

Run webtests using the VSTest task

Using the Visual Studio test task, webtests can now be run in the CI/CD pipeline. Webtests can be run by specifying the tests to run in the task assembly input. Any test case work item that has an “associated automation” linked to a webtest, can also be run by selecting the test plan/test suite in the task.

Webtest results will be available as an attachment to the test result. This can be downloaded for offline analysis in Visual Studio.

This capability is dependent on changes in the Visual Studio test platform and requires installing Visual Studio 2017 Update 4 on the build/release agent. Webtests cannot be run using prior versions of Visual Studio.

Similarly, webtests can be run using the Run Functional Test task. This capability is dependent on changes in the Test Agent, that will be available with the Visual Studio 2017 Update 5.

Work Items hub

To use this capability you must have the New Work Items Hubpreview feature enabled on your profile and/or account.

The Work Items hub allows you to focus on relevant items inside a team project via five pivots:

Assigned to me - All work items assigned to you in the project in the order they’re last updated. To open or update a work item, click its title.

Following - All work items you’re following.

Mentioned - All work items you’ve been mentioned in, for the last 30 days.

My activity - All work items that you have recently viewed or updated.

Recently created - All work items recently created in the project.

Creating a work item from within the hub is just one click away:

While developing the new Work Items hub, we wanted to ensure that you could re-create each one of the pivots via the Query Editor. Previously, we supported querying on items that you’re following and that were assigned to you but this sprint we created two new macros: @RecentMentions and @MyRecentActivity. With these, you can now create a query and obtain the work items where you’ve been mentioned in the last 30 days or create a query that returns your latest activity. Here’s a sneak peek of how these macros can be used:

Customizable work item rules

Whether it be automatically setting the value of certain work item fields or defining the behavior of those fields in specific states, project admins can now use rules to automate the behavior of work item fields and ease the burden on their teams. Here are just a few examples of the key scenarios you will be able to configure using rules.

When a work item state changes to Active, make Remaining Work a required field

When a work item is Proposed and the Original Estimate is changed, copy the value of Original Estimate to the Remaining Work field

When you add a custom state, with its own by/date field types, you can use rules to automatically set those fields’ values on state transitions

When a work item state changes, set the value of custom by/date fields

To get started with rules, simply follow these steps:

Select Customize from the work item’s context menu

Create or select an existing inherited process

Select the work item type you would like to add rules on, click Rules, and click New rule

Custom Fields and Tags in Notifications

Notifications can now be defined using conditions on custom fields and tags – not only when they change but when certain values are met. This has been a top customer suggestion in UserVoice (see 6059328 and 2436843) and will allow for a more robust set of notifications that can be set for work items.

Inline add on Delivery Plans

New feature ideas can arrive at any moment, so we’ve made it easier to add new features directly to your Delivery Plans. Simply click the New item button available on hover, enter a name, and hit enter. A new feature will be created with the area path and iteration path you’d expect.

New Queries experience

Preview Feature

To use this capability you must have the New Queries Experiencepreview feature enabled on your profile.

The Queries hub has a new look and feel, changes in navigation, and some exciting new features such as the ability to search for queries.

You’ll notice that the left pane has been removed. To quickly navigate between your favorite queries, use the dropdown in the query title.

We’ve also made the following improvements:

Create and edit followed work item queries with the @Follows macro

Query for work items you were mentioned in with the @Mentions macro

Save as now copies charts to the new query

Simplified command bars for Results and Editor

Expanded filter capabilities in the result grid

Burndown and Burnup widgets

The Burndown and Burnup widgets are now available for those who have installed the Analytics Extension on their accounts.

The Burndown widget lets you display a burndown across multiple teams and multiple sprints. You can use it to create a release burndown, a bug burndown, or a burndown on just about any scope of work over any time period. You can even create a burndown that spans team projects!

The Burndown widget helps you answer the question: Will we complete this project on time?

You can burndown on any work item type based on count of work items or by the sum of a specific field (e.g., Story Points). You can burndown using daily, weekly, monthly intervals or based on an iteration schedule. You can even add additional filter criteria to fine tune the exact scope of work you are burning down.

The widget is highly configurable allowing you use it for a wide variety of scenarios. We expect our customers will find amazing ways to use these two widgets.

The Burnup widget is just like the Burndown widget, except that it plots the work you have completed, rather than the work you have remaining.

Streamlined user management

Preview feature

This capability is enabled through the Streamlined User Managementpreview feature on your profile and/or account.

Effective user management helps administrators ensure they are paying for the right resources and enabling the right access in their projects. We’ve repeatedly heard in support calls and from our customers that they want capabilities to simplify this process in VSTS. This sprint, we are releasing an experience to general availability, which begins to address these issues. See the documentation for the User hub for more information. Here are some of the changes that you’ll see light up:

Invite people to the account in one easy step

Administrators can now add users to an account, with the proper extensions, access level, and group memberships at the same time, enabling their users to hit the ground running. You can also invite up to 50 users at once through the new invitation experience.

More information when managing users

The Manage users page now shows you more information to help you understand users in your account at a glance. The table of users includes a new column called Extensions that lists the extensions each user has access to.

Adding Users to Projects and Teams

We want to make sure each of your administrators has the tools they need to easily get your team up and running. As part of this effort, we are releasing an improved project invitation dialog. This new dialog enables your project administrators to easily add users to the teams which they should be a member of. If you are a project or team administrator, you can access this dialog by clicking the Add button on your project home page or the Team Members widget.

Improved authentication documentation and samples

In the past, our REST documentation has been focused solely on using PATs for access to our REST APIs. We’ve updated our documentation for extensions and integrations to give guidance on how best to authenticate given your application scenario. Whether you’re developing a native client application, interactive web app, or simply calling an API via PowerShell, we have a clear sample on how best to authenticate with VSTS. For more information see the documentation.

Extension of the month: Code Quality NDepend for TFS 2017 and VSTS

With over 200 installs and a solid 5-star rating, NDepend is one of the best code quality solutions in our Marketplace and the extension adds a bunch of new features to your VSTS experience

These releases always include more than I can cover here. Please check out the August 28th and the September 15th release notes for more information. Be sure to subscribe to the DevOps blog to keep up with the latest plans and developments for VSTS.