In this article, we will take a look at Azure DevOps.
We will first show how to set up Azure DevOps through the Azure portal and take a look at each service it provides. We will look at some popular extensions for Visual Studio Code and show how to set them up, describe some advantages and disadvantages of using Azure DevOps, and finally, the alternatives to Azure DevOps.
Let’s dive in!
Azure DevOps is a unified platform from Microsoft that combines a modern set of Developer services together. It can be used as a cloud Software-as-a-service (SaaS) offering or be hosted on an on-premise server.
Microsoft describes Azure DevOps as:
Azure DevOps provides developer services for allowing teams to plan work, collaborate on code development, and build and deploy applications. Azure DevOps supports a collaborative culture and set of processes that bring together developers, project managers, and contributors to develop software. It allows organizations to create and improve products at a faster pace than they can with traditional software development approaches
To access Azure DevOps in the Azure portal, search for DevOps in the service bar and select ‘Azure DevOps Organisations’.
Click on ‘My Azure DevOps Organizations,’ then ‘create new organization’:
Give your organization a unique name, and then create your first project.
Hit ‘create project,’ and you’re done!
When you are greeted by the Azure DevOps dashboard, the available services will be shown on the left menubar. Each service is tightly integrated with other services in the suite.
Let’s take a look at each service listed on the menu.
Azure Boards
Boards enable you to track your work with a set of Agile tools. Among other capabilities, they can help you track progress, bugs, and issues using a Kanban board. They enhance collaboration and transparency within different teams, allowing for real-time updates and visibility into the status of different tasks and projects, and also have integrations available for Slack and MS Teams.
Boards basically provide a visual representation of the work, making it easy to set up priorities and ensuring the team is focused on delivering value efficiently.
Boards integrate seamlessly with other Azure DevOps tools, offering an end-to-end experience from tracking and planning until actual code deployment.
Azure Repos
Repos provides Git repositories for you to store and version control your code. You can also use Team Foundation Version Control (TFVC), allowing teams to choose the best version control system for their needs.
Azure DevOps Repos offer advanced features such as branch policies, pull requests, and comments on open pull requests to enhance collaboration between teams. These features enforce more code reviews, build validations, and status checks, enabling teams to be more efficient without sacrificing development time.
Building branch policies and having a pull-request approach to merging code changes enhances security around your repositories, ensuring that no changes can be pushed directly to the main branch, thus minimizing the chances of human error.
Azure Pipelines
Pipelines allow you to set up Continuous Integration and Continuous Delivery pipelines (CI/CD), enabling teams to automate the building, testing, and deployment of application. These pipelines are written in YAML, but you can also create them visually, allowing teams to choose the best approach for their workflows.
Azure DevOps Pipelines ensure that code changes are automatically integrated and delivered to various environments, improving the speed and reliability of the software delivery process.
One other key feature of Pipelines is the fact that you can create reusable pipelines that can be easily leveraged in others, making your pipeline-related code DRY and ensuring a smooth workload.
Azure Test Plans
Test plans enable continuous testing and exploratory testing of your applications to ensure quality through a suite of tools.
These comprehensive tools help teams plan, track, and manage their testing efforts to ensure the delivery of high-quality software.
Teams can create and manage test plans, author and run manual test cases, and track progress and results in real time. This is really helpful in the software development lifecycle (SDLC), as test cases ensure code cannot be merged without passing all of the checkboxes defined.
With support for both manual and automated testing, Azure DevOps Test Plans is versatile, catering to various testing methodologies and practices.
Azure Artifacts
Artifacts is a package repository allowing teams to share packages such as Maven, npm, and NuGet and integrate these packages into their build pipelines.
By using Artifacts, teams can efficiently manage the dependencies used in their codebase and ensure that all team members and CI/CD pipelines have access to the same set of packages, promoting consistency across different environments and stages of development.
It also allows teams to use packages from public repositories in addition to their private feeds. This is crucial for teams that depend on open-source packages but also want to ensure the availability and security of their dependencies.
Aside from those listed, you can also use the Wiki, which is useful for documenting projects, team dashboards for getting a project overview and visualizing metrics, and configuring notifications to let your team members know when they have been tagged or assigned work.
Using Azure DevOps provides many advantages.
Azure DevOps is a SaaS service, so it provides Maintenance-free operations, including elastic scale, and as we have shown in this article, can be quickly set up. Access to cloud build and deployment servers is also provided. It is reliable and backed by a 99.9% SLA and 24×7 support. The development roadmap for Azure DevOps is published publically for full transparency so you can get full visibility of the new features coming soon.
It has a tight RBAC permission model integrated with Azure AD, enabling you to grant permission to particular parts on Azure DevOps as required.
However, if you need your data to stay within your on-premise organization, you may need to choose the Azure DevOps server version, which would sit within your trusted network. This will take longer to set up and incur management and hosting overheads. You will also need to provision build and deployment servers, meaning more servers and overhead. If you are currently running Team Foundation Server on-premises, Azure DevOps would be a natural upgrade if cloud hosting was out of the question.
Azure DevOps can support continuous delivery to any cloud, including AWS and Google Cloud. It can be used for development across any platform (Linux, macOS, and Windows) or language (including Node.js, Python, Java, PHP, Ruby, C/C++, .Net, Android, and iOS apps). Azure DevOps is not just aimed at organizations building and shipping .Net code.
Download the Build vs. Buy Guide to Scaling Infrastructure as Code
Azure DevOps pricing is very flexible. You can either choose only the services you are interested in, or you can go for a bundle of all the services. If you opt for the basic bundle (which includes everything apart from tests), the first five users are free, and then you pay $6/month/user, or if you go for the full service, you will pay $52/month/user.
Azure DevOps supports extensions for integrating with other services and enhancing the functionality of some of the Azure DevOps services. Because of this, Azure DevOps is extremely flexible. It is not limited to tools in the Microsoft ecosystem.
You can browse and install hundreds of extensions from the Visual Studio Marketplace.
Useful extensions include:
- Slack — If your team uses Slack for collaboration, you can hook Azure DevOps notifications into a slack channel.
- Microsoft Teams — You can use this extension to get notifications for pipeline runs, board updates, and more.
- Replace Tokens — Azure Pipelines extension that replace tokens in text files with variable values.
- Azure DevOps Open in Excel — This free extension adds a button that opens work items and query results in Excel directly from Azure DevOps.
- Code Search — Code Search is a free extension that provides fast, flexible, and accurate search across all your code.
- Sonarqube — Detect bugs, vulnerabilities and code smells across project branches and pull requests. It can be integrated with the Sonarqube community edition or commercial versions.
- Terraform — Install Terraform and run Terraform commands to manage resources on Azure, AWS, and GCP.
- Ansible — This extension executes an Ansible playbook using a specified inventory via the command line interface.
- Chef — Tasks for performing common Chef operations against the Chef Automate platform.
- Kubernetes — Kubernetes extension with k8s endpoint. Which enables the kubectl, helm, and istioctl command.
- Bicep — Provides Azure DevOps tasks to install and run Microsoft Bicep CLI commands (cross-platform)
There are many alternatives to Azure DevOps, the biggest amongst them including:
- GitHub
- GitLab
- Bitbucket
These provide similar capabilities in terms of Code repositories, CI/CD, and Agile tools, each with its own pros/cons.
Note that Microsoft owns GitHub, which is expected to replace Azure DevOps eventually but still lacks key features. However, most features are being included in GitHub Enterprise. It’s unlikely that Azure DevOps is going away in short to medium term. As of 2021, Microsoft itself held 98% of its code on Azure DevOps, which 80,000 internal users access.
If you need any help managing your infrastructure, Spacelift supports using Azure DevOps as the source of code for your stacks and modules. It is an alternative to using homegrown solutions on top of a generic CI solution. It allows you to automate, audit, secure, and continuously deliver your infrastructure. You can check it for free by creating a trial account.
Azure DevOps is a mature, feature-rich platform that combines a modern set of Developer services together.
For more information, check out the Azure DevOps documentation.
The most Flexible CI/CD Automation Tool
Spacelift is an alternative to using homegrown solutions on top of a generic CI. It helps overcome common state management issues and adds several must-have capabilities s for infrastructure management.