Microsoft Azure DevOps Server – One Ring to Rule Them All

Željko Lenić, DevOps Project Engineer

Tech

23.07.2020.

featured image

In the DevOps ant yard things are constantly moving. New tools for different segments of the development cycle are being created and their capabilities ever more broadened.

Some of the best of these tools have grown beyond their initial DevOps segment, and are now turning into a total DevOps solution. This is what Microsoft has done with Azure DevOps.

Although Microsoft is one of the largest software companies in the world, it is not that long ago that they have met every aspect of software development challenges. They realized that the division of their large workforce into teams will create a strong foundation for efficient, high-quality product development. But these teams must be coordinated in order to establish a good collaboration and to pick up the pace of hitting milestones. So, Microsoft created Team Foundation Services, cultivated this product into a new hybrid and called it Azure DevOps Services. There is also an on-premises variant, called Azure DevOps Server.

Total DevOps Solution

Upgraded at least yearly, new features have helped grow this tool into a total DevOps solution, containing solutions for agile planning, collaboration, dev tools plugins, repository, build, CI/CD, release management, testing, artifacts repository, reporting, monitoring, documentation and numerous customization capabilities.

Work items (or tickets, if you like) are categorized into several layers. You can also create your own work item type by placing it in the appropriate category. This placement influences your backlog and the Kanban board at a later stage.

Each work item type has its own customizable states, transitions, rules and fields. One can use numerous system fields or create new ones.

Organizations which use Azure DevOps can perform workflow customizations down to the bone in several ways – by using a web form, a command line, Visual Studio or even third-party software. You can create your own states, transitions, rules and fields. There are also links to third-party systems that you use.

Work items are automatically linked to influenced changesets, builds, test cases and releases. This comes in handy when you need to retrace specific changes.

Source Control

Changes are handled using Git or the Team Foundation Version Control (TFVC) system, with repository management included. You can manage security and repository permissions down to a single user or team, as well as perform branching activities.

Source control features enable you to use any programming language, and with the available extensions, create build/release/deploy pipelines for virtually any platform. When you use scripts for your build/deploy configurations, you can use a source control reference instead of inline script. This enables instant mass updates of many such configurations.

You can have an automatic build scheduled or triggered by a new changeset. Build artifacts can be held in a repository and used consequently. This is useful for gated releases and allows for tight coupling with tests, so that no change gets to production without being checked first.

Automatic is a second name for this versatile system, so you can create your automatic build and/or release configuration. These configurations consist of any number of steps, and this is where end user programming skills come in handy – scripts. You can use PowerShell, Bash, Python... These scripts will be executed on an agent machine. No, you don’t want to have it all on one system, risking resource depletion or unexpected problems on a collaboration server – you can have multiple systems, each containing multiple agents that execute your build/release pipelines. These scripts can be encapsulated in Task Groups, to be reused in other configurations. Classic pipelines are also going through a transformation, so we can expect full YAML pipeline features in the future.

What About Cloud?

You might be asking yourself, “What about Cloud?” Yes, you can create and push containers to Docker Hub or to Azure Container Registries or to Nexus or to whatever comes out next week. Kubernetes is included too. You can deploy to AWS, Azure, GCP.

You can use customizable monitoring in the form of all sorts of customizable pies and diagrams with a good deal of condensed info on each monitoring dashboard.

Reporting solutions such as the integration with Power BI and Azure Analysis Services, or MS SQL Server Reporting Services, are also supported.

The documentation platform is included in the form of the Azure DevOps Wiki platform, where you can use standard formatting and documentation-as-code principles.

When you look at the sheer number of areas Azure DevOps covers, it becomes clear that it has truly become or is very close to becoming a single versatile DevOps solution with interoperability features and an exciting future. Already now, it’s wrong to disregard Azure DevOps if you use Java, as it can provide source control, build and deploy pipeline orchestration, not to mention both Android and iOS support.

Teams and Slack have recently become more interconnected due to Azure DevOps, through automatic Repos event notifications. There are already so many features that adding a small number of new ones creates numerous new possibilities left for us to discover and use, as well as to enhance existing solutions.

Azure DevOps Server is rapidly growing, keeping pace with industry innovation and providing us, Developers, DevOps Engineers and Administrators, with the one ring – the tool to rule them all.

RELATED

14.07.2020.

Welcome FancyFrame

A few months ago, when I did the PR for PancakeView (the version for WPF) and had some issues with borders (which had worked perfectly on UWP), I thought about whether the code could be written once and used everywhere. Does that sound familiar? 😊

Read more