Customizing Azure DevOps with Extensions

Developer Support

In this post, App Dev Manager Larry Duff shows how to customize Azure DevOps with Extensions.


Why do you paint rooms in your house? Add new wheels or fuzzy dice to our cars? We want to make it our own. When it feels like your invested in it, you appreciate it more. Software is no different. When software implements your policies and procedures you are more productive and happier to use it. Nothing is perfect “out of the box.” You usually spend a good amount of time configuring, but even after that there is usually room for improvement. In the case of Azure DevOps Services/ Server you can add extensions to bridge and make the product yours.

Azure DevOps allows you to extend in any of the services that are provided.

A close up of a sign Description automatically generated

As you look to extend there are two ways you can do this, from the Marketplace or create your own custom extension.

Before embarking on building your own extension, I would endorse looking through the Marketplace for a solution, when I last looked there were over 1250 extensions available to add to your system. But remember to review closely what you’re looking at. Let’s look at the anatomy of a listing for an extension.

  1. Author – If the extension is from a trusted company certainly makes it easier to install. But just because it doesn’t make it suspect, you just need to dig deeper.
  2. How many installs – This is a great bellwether on how well the extension does its job. There has been a word of mouth spread about using it, or maybe this is a key gap in Azure DevOps being filled.
  3. Rating – Two pieces to this… do the number of reviews line up with the number of installs? If there aren’t a lot of reviews but lot of installs, maybe the extension is getting installed but not used. Are the reviews that are posted good? Remember that someone who has a bad experience will tell fifty people, and only one in fifty people that have a good experience will write a review, so bad reviews don’t completely tell the story.
  4. Cost – Very few extensions cost you anything for the extension. But remember that there could be services associated with the connection that could have a cost.
  5. Service it extends – Tells you were you’ll use the extension, sometimes the extension has multiple pieces and/or will affect multiple systems.
  6. Products this is used with – VERY IMPORTANT, will it work on the system I’m using?
  7. Source availability – Another important factor, do I need to see how it’s built, do I want to contribute?
  8. How often updated – Doesn’t tell you much by itself, but should it be updated because what it connects to is getting updated? An old extension that doesn’t use the latest features may be worse that having nothing at all.

When you install you get one final check to ensure it’s what you want. Pay attention to the permissions and make sure the extension only accesses areas that you expect.

Once you complete the install, verify it’s installed via the dashboard.

We know where to find extensions and how to install them. Let’s list out some of the most useful extensions to install in your system.

General

Azure DevOps CLI

Control Azure DevOps from the command line. Work in a streamlined task/command-oriented manner without having to worry about the GUI flows. Works with Pipelines, Boards, Repos, Artifacts and DevOps commands to the Azure CLI.

Boards

Azure DevOps Open in Excel

Useful for Project Management roles who need more than standard reports, allows for bulk editing work items. Leverage Excel tools to analyze and visualize a large number of work items. Work items that are opened in Excel can be edited and published back to Azure DevOps.

Work Item Visualization

In Azure DevOps Services you can add, edit and display work items in query results and various boards. With this extension you can visualize these work items from within the work item form. Some concern by users, hasn’t been updated since Apr 2018.

Azure Boards Microsoft Teams app

Get notified whenever work items are created, updated, commented on, deleted or restored. Use messaging extension to search and share work items and create new work items. Convert a conversation in the channel into a work item using message actions. Use work item URLs to get preview of work items. This will help to add context to the conversations in the channel.

Azure Boards Slack app

New release that replaces popular Slack Integration. Create work items using slash command. Convert a conversation in the channel into work item using message actions. Get notified whenever work items are created, updated, commented on, deleted or restored. Use filters to customize what you hear in the channel.

Repos

Search across all the projects, teams and repositories to which you have access. Similar to Work Item Search, available as built in extension.

Pull Request Merge Conflict Extension

Review and resolve pull request merge conflicts on the web. Before a Git pull request can complete, any conflicts with the target branch must be resolved. With this extension, you can resolve these conflicts on the web, as part of the pull request merge, instead of performing the merge and resolving conflicts in a local clone.

Pull Request Dashboard

Provides a place that pull requests across all repositories can be viewed on a single page.

Pipeline

Sonar Scanner

Continuous Code Quality, takes Lint functionality to the server. Requires connection to a SonarQube server, that you usually setup or SonarCloud service. Supports most major programming languages, including C#, VB .Net, JavaScript, TypeScript, C/C++, … Provides build tasks to add in your build definition. All branches and pull-requests are automatically analyzed, helps discover early any bug or vulnerability in the code.

Replace Tokens

Replaces tokens in files with variable values as a step in the pipeline. One of the top rated, most reviews talk about it being indispensable

TerraForm

Provides “Infrastructure as Code“. Install and run terraform commands to manage resources on Azure, AWS and GCP. Terraform also allows management of on-prem resources. There are two different implementations in the Marketplace, both are popular.

Resharper Code Quality Analysis

Based on the Resharper Command-Line Tools (CLT). Build task will automatically run over a thousand code quality checks for various languages.

Build Usage

Show how many build minutes are being used within an account. Make them visible for your team by adding Build Usage tiles to your dashboard

Teams

Monitor your pipelines from your Microsoft Teams channel. Do following things from your Microsoft Teams channel:

  • Get notifications for various events related to builds and releases
  • Approve release deployments from your channel
  • Use filters to customize what you hear in the channel

ARM Outputs

Use the ARM Deployment outputs in your Azure Pipelines. Usually this task runs directly after the ‘Azure Resource Group Deployment’ task. Used by Azure DevOps Demo Generator.

Team Project Health

Add an overall status of your builds and releases to your dashboard.

Create Your Own Extension

Write with your preferred development tools using standard technologies HTML, JavaScript, CSS. Uses the API Library to interact with Azure DevOps Services, packaged into a .vsix file. The Marketplace is where extensions are published. They can be kept privately for you and your team or public for other developers currently using Azure DevOps Services. There is a good example to get you started on writing your own extension. Many of the extensions have links to GitHub repos. Looking through those repos is a great way to get ideas for your own extensions. Even better contribute to the extension to help make it better.

There are great opportunities to extend Azure DevOps whether you grab from the marketplace or write you own. Go ahead and make Azure DevOps your own.

 

1 comment

Discussion is closed. Login to edit/delete existing comments.

  • Joe Gallagher 1

    FYI the link for the “Build Usage” extension is incorrect — it’s points to the same URL as “Teams”.

Feedback usabilla icon