Businesses and teams make significant investments in tooling – from tool selection to proof of concept to support and maintenance to integrating other tools along the pipeline – and sometimes the tools themselves can start to feel like the product. It’s hardly surprising that teams get excited about opportunities to centralize and integrate disparate toolsets into clear, concise, and transportable units. Enter Azure DevOps Extensions.
What Are Extensions
In Micosoft Azure, extensions are small programs that customize and expand the capabilities of administrators and developers on the platform.
Azure includes extensions for a number of different purposes from managing and monitoring Virtual Machines (VMs) to coding in Visual Studio to DevOps. One example might be running a Jenkins pipeline after a code change and, if the pipeline is successful, deploying Azure Cloud resources by applying a Terraform configuration file.
There are so many great extensions across Azure DevOps that we can’t cover them all here, so be sure to explore on your own to find even more.
Installing extensions in Azure DevOps couldn’t be simpler –
- Sign in to your organization
- Browse the marketplace
- Search for the extension
- Select “Get It Free”
- Select your organization
This functionality is also available via CLI and the command –
Azure DevOps Extensions
Let’s take a look at a few of the top Azure DevOps Extensions available, starting with project- and team- focused capabilities:
What: This extension works to integrate numerous activities with Microsoft Teams for improved visibility and communication within and across teams. Activities can include code commits and pull requests, build actions, releases, and more. Specialized extensions, such as Azure Boards, also exist that extend or replace some of the capabilities and are worth a look as well.
Why: Communication is critical for DevOps organizations to maintain consistent high velocity during projects. Centralized communication platforms are also a great way for management to remain informed of progress without needing to disrupt work for updates. Staying informed on change within a team, such as by having Teams notifications of code commits, can help to improve a DevOps team’s velocity while sharing information across teams, such as with a tracking dashboard, can help to keep teams synchronized as well as avoid technical debt from duplicate efforts or blockers.
What: The Azure Cost Insights extension provides visibility into Azure Cloud costs by interacting with the Azure Costs APIs directly. This integration enables the extension to provide highly accurate data without exposing the data itself or pulling the data out of Azure.
Why: It’s easy for Cloud costs to quickly spiral out of control if not properly monitored and managed – in fact many businesses cite cost management as a primary hurdle in Cloud adoption. But it’s not only the finance department who should take an active role in cost management; from the first VM teams should be conscious of their spend and ensure that costs lead directly back to benefits. Although effective cost management adds real business value, ensuring that the activity of managing costs is not disruptive to the work effort of DevOps teams is crucial to balancing the needs of both finance and technical organizations. In many cases, effective cost management is a direct product of greater and shared visibility across those organizations in order to drive productive conversations on the topic.
What: This extension promotes visibility and alignment within and across teams by centralizing and exposing work in a calendar format. Users can customize views to bubble-up important information and changes are reflected instantly when a team needs to change priority or direction.
Why: Within a DevOps organization it is common for a team, or even a pair of teams, to be highly synchronized and operating very efficiently. But how many projects have been derailed by teams pursuing duplicate work without communicating or blocked by two teams waiting on output from each other? Active communication remains a critical component of successful project management, but passive communication – such as reviewing a blocking team’s calendar – can save time, energy, and headache. The increased visibility between teams can provide value in a scrum-of-scrums or help to facilitate discussion between two product managers, but the greatest value may come from providing an effective lever for teams to control and avoid technical debt by decisions about the priority and feasibility of work are informed by the reality of other teams’ efforts.
Definition of Done
What: The Definition of Done extension supports team velocity by promoting visibility of done definitions from teams to work items and more. Definitions are tracked in tabs in Visual Studio for quick and convenient reference.
Why: Delivery Plans help teams to understand their position in the DevOps organization across time, but this understanding is for nothing if the team doesn’t know where they’re going or when they’ve gotten there! Defining done can sometimes be the hardest part of a project and this extension helps with the heavy lifting by ensuring that all parties are on the same page when it comes to this critical project component. There’s nothing more frustrating – nor damaging to a project – than completing work on a new feature or feeling ready to close out a set of user stories only to discover that there has been a misunderstanding of requirements and the work is not complete. In addition to being frustrating, this type of occurrence can be a significant source of technical debt, especially if it is a frequent event in an organization. Clearly communicating, documenting, and agreeing to the definition of done is a major facilitator for effective DevOps teams.
Now that your DevOps organization is organized, let’s dive into some of the mechanical extensions on the marketplace:
What: Jenkins is a mainstay of Continuous Integration and Continuous Deployment (CI/CD) operations. With the Jenkins extension, teams can bridge the gaps between Azure DevOps and on-premise or Cloud hosted Jenkins servers to deliver seamless integration and visibility.
Why: Many teams are already taking advantage of the vast array of features and add-ons available in the Jenkins ecosystem to drive their CI/CD projects. The good news for these teams is that they can hook into their existing Jenkins resources to directly integrate with code resident in Azure DevOps, providing a more complete and flexible CI/CD environment. One of the most popular new approaches to managing the complexities of modern software development is GitOps, which pairs code development activities with automated responses such as building containers, launching orchestration services in the Cloud, and deploying the containers to the services. But that’s just one example – how about launching a database populated with testing data on successful code compilation then releasing the code to production if the tests succeed? Integrating Jenkins and Azure DevOps is one step on the path to making this possible.
Azure DevOps vs. Jenkins – a 2021 Comparative Outlook
Advanced Jenkins Parallel Builds (And Jenkins Distributed Builds)
What Do Jenkins Controllers Say About the Evolution of CI/CD? You Want to Read This!
The Top 10 Jenkins Plugins You Should Be Aware Of in 2021
What: Terraform by Hashicorp has taken the Infrastructure as Code (IaC) world by storm to dominate in its position as the most-adopted framework. The combined dual-threats of resource statefulness and the predictable infrastructure configuration and deployment make the tool a must in any DevOps team’s toolbelt.
Why: This extension brings the full capabilities of Terraform to Azure DevOps operations enabling teams to launch VM’s or create entire environments in tandem with other actions. But the extension goes even further, providing the same capabilities for AWS and GCP clouds all from the convenience of Azure DevOps. With the rise of multi-cloud concepts in the press, organizations are starting to look for ways to efficiently manage resources across vendor boundaries and ideally from a central location. The Terraform extension for Azure DevOps not only brings cross-provider Infrastructure as Code (IaC) support to the table, but also without requiring changes to existing workflow logic – simply add Terraform code to implement infrastructure in a new provider, plug it into a workflow, and sit back while this extension does the rest. This is a powerful feature because it maximizes the efficiency of organizations already facing a mammoth undertaking: becoming multi-cloud.
Docker Build Task
What: In the virtualization world, Docker is the 1927 Yankees. Containers, and specifically the Docker structure, have swept the DevOps world to become the de-facto standard. The Docker Build Task extension carries Docker build, push, and compose functionality into Azure DevOps with special features for added support of Azure Container Service.
Why: Most DevOps teams are making use of Docker in one fashion or another – whether that’s full integration through a container orchestration system like Kubernetes, through hosted service integration like Azure Container Service, or just for local development flexibility. Making use of this extension allows teams to fully integrate Docker builds into any phase of the Azure DevOps development lifecycle. The value returned from this integration can take many forms – from building containers to capture changing code as GitOps, responding to supply chain events such as security updates or new versions of software, launching portable testing platforms for automated validation of changes, and more. Taking these actions as inline activities in an Azure DevOps pipeline is a fantastic and valuable tool for any toolbox.
Docker vs VM
Docker vs Kubernetes – Should We Really Compare?
GitHub Integration for Azure Pipelines
What: This extension is similar in function to GitHub Actions in that it supports pipeline-based build/test/deploy activities seamlessly.
Why: Organizations pursuing a GitOps strategy will be especially interested in this extension as a way to tie together Azure pipelines, code management, and automated actions. Automated actions in response to code changes can range from simple checks such as verifying a branch name or confirming the result of automated testing to more complex logic such as calculating cyclomatic complexity or performing antivirus scanning. In addition to performing valuable functions, automated actions such as these are a very valuable way for teams to increase velocity without sacrificing quality or requiring additional staffing – do more with less!
What: This extension brings the Incredibuild BuildConsole into Azure DevOps to significantly decrease build time in Visual Studio.
Why: Everything in the Cloud is time-sensitive – from responding to events automatically to scaling in or out based on activity to on-the-fly routing decisions driven by response times – perhaps none so much as the time from code changes to completed build. By taking advantage of the Incredibuild BuildConsole, developers can capture time savings in every build and spend those savings in additional testing, faster time to delivery, or simply improved velocity. There are many ways to improve both developer output and experience; sometimes though a simple injection of raw power into the software development lifecycle is the quickest way to achieve great results.
Azure DevOps extensions can help a team turn a corner of operational efficiency when struggling or turn the dial up to eleven for already high-performing teams, all by providing teams with a centralized and convenient integrated service bus for disparate tools. From aligning teams around a shared understanding of effort to launching infrastructure to building code, Azure DevOps extensions streamline work to eliminate manual tasks and help teams operate at their peak.