In a slight aside from the Azure specific functionality, my current role has required a deeper insight into Azure DevOps. I’m sure all developers can appreciate the changing requirements that Agile can bring to the table, so I’m going to head up a few articles about the base functionality.
Azure DevOps has been out for a couple of months now, so in general, I thought it might be a good time to go through the key points and reflect on how we can use it to really maximise production.
What is Azure DevOps?
Azure DevOps is actually an evolution of the Visual Studio Team Services that most developers have probably used to some capacity already. Azure DevOps aims to bring everything together in one place so that we can use as much or as little of it as we need to maximise of efficiency and see the benefits that DevOps traditionally has.
What does Azure DevOps Do?
So, Azure DevOps is actually a few main components so I will go through each of them in turn but in short, it brings together –
- Process Control (Boards, tasks, agile methods etc)
- Source Control (Git or TFVC)
- Continuous Integration (Build Pipelines)
- Continuous Deployment (Release Pipelines)
- Automated Testing
Process control, including workflows and agile are a staple of a tightly knit platform for developers and business advocates alike. Azure DevOps gives a really granular security model to allow developers and business stakeholders to work in the same space to encourage closer working.
The system includes the classic Kanban and Scrum Boards you’d expect, with configurable inputs for all epics, stories and tasks combined with social features such as the ability to comment directly at a colleague using a twitter style @ and have them notified.
A cool addition is the ability to link process control throughout the system, including hooking up source control workflows for pull requests to require things like comments to be resolved and
Source control is fairly standard here, but what’s cool is the level of choice you have. Azure DevOps doesn’t force anything on you, it lets you choose major players like Git instead so you can benefit from DevOps without needing to use Microsofts Version Control. You can then fork, and branch to your hearts desire, fully integrated with your process control and CI/CD pipelines through build queues.
Azure Pipelines is a Continous Integration / Continous Development tool that allows you to deploy using pretty much any language to any platform (Windows, Mac or Linux!).
The level of integration is actually pretty cool as it allows you to work with loads of the industry standard out of the box tasks built by Microsoft Partners to let you work quickly without needing to write boilerplate code. It has support for unit testing with reporting dashboards as well as the ability to push the project through to test, QA and finally to the live environment.
The Continuous Integration side of things is fairly cool, with the ability to build everything in DevOps upon a successful commit. These pipes can do pretty much everything, from sorting your angular compilation, your .net application builds and even mac builds (using a mac build agent supplied by Microsoft.
At the other end of the pipe is Continuous Deployment where your builds are automatically (or automatically after a gateway test) deployed to your test or live environments. This is the dream for businesses, to have a fully fledged software pipeline where you are always on the latest code.
It’s worth mentioning at this point that builds are not completely free. The free tier gives you 1800 minutes of build time on a single build agent. Fine for small businesses, but larger businesses will definitely need more.
Possibly better placed after CI but before CD, the Azure DevOps has an integrated suite of tests that can be applied to the builds to ensure you are ready to ship bullet proof code. I can’t talk much about it though as it requires a separate subscription that I don’t have.
There’s a lot of talk about tightening the feedback loop with Azure Pipelines. Automatically applying builds to code commits, testing the builds and feeding straight back to the developer to reduce the amount of time it takes to identify an issue. It allows you to easily view log files and results of units tests and do loads of time-saving things.
This is a hugely functional collection of tools that actually is a bit intimidating for lower level developers as it includes so many different aspects of the development process. It’s important to remember though, this is an evolution of the ‘Team’ Foundation Server. Team. It’s not designed for a single person because it’s not really practical to take ownership of all these areas. For teams though, this seems to tick literally all the boxes.
Ultimately though, the best things that Azure DevOps brings to the party requires you to use all of the thing services to get the most out of it. If you’re a small team or working on a small project, you probably won’t get a huge amount of any of it,