Azure DevOps and Services

Manoj Maharana
7 min readOct 19, 2022

--

Azure DevOps is a DevOps platform, Software as Service (SaaS) offering from Microsoft, which was created to basically a one stop shops for implementing all your DevOps processes for your project.

What is DevOps Platform?

DevOps is a combination of concepts and tools and basically anything that makes developing and releasing applications fast in an automated way and with high quality possible, so a project needs to implement DevOps practices in order to achieve an efficient level of workflow.

In single line we can say It’s the software development lifecycle as efficient as possible by partial or fully automating it. Azure DevOps is basically a technological implementation of all the DevOps process which covers the whole software development lifecycle and Its features provided all parts of the lifecycle.

Azure Boards

As we know In Software development lifecycle, Planning is the most important part of the software development lifecycle. Planning is the process of deciding what to do and how to do it or what’s the business value behind it.

There are several ways of defining the workflow of how the project team will work on their product or application what roles they have the team, how they will divide and split the task etc. Two of the most popular workflows are scrum and agile, many modern project approaches for their development.

Create a new Project in Azure DevOps for application

For your application what kind of the work item process like Agile, Basic, Scrum etc. you can choose the corresponding board for this project while create a new project. (It provides different workflow features to implement)

In Azure boards you can create tickets or tasks for features improvement or fixes for your applications as part of that agile or scrum processes. You can also assign it to people to work on and you can also track progress of these features or improvements while they are being developed. Now developer need to take that planned task and actually develop it, In that process they may have questions about the task so azure boards can be used for communicating between the developers, testers, product owners etc. with in the task descriptions. It also have overview and transparency over the status of the feature as it is being developed like who is working on it what stages it is in , what’s its progress status , has it been deployed already etc.

At first when we click new work items we have-> Epic, Issue and Task.

Task are basically defined for the people who works on the application like Developers, Designers, Testers etc. Whereas stories or epic are generally created for customers or marketing teams in order to define the topic of the task. As Microsoft documentation says Issues and Tasks are used to track work, while Epics are used to group work under larger scenarios.

Here you can create a new Epic like →

Azure Boards also supports Scrum and Kanban, and can connect to other platforms like GitHub.

Azure Repos:

Now the application Code that developers are creating also is the part of the lifecycle. Azure Repository feature is what you can use in order to host that code. It’s a Source control management that host your code in private Git Repository. (It’s similar to GitLab, GitHub, Bitbucket etc.) Developers host their code in Azure repository and push their changes to it. Azure DevOps is a part of develops lifecycle where developers collaborate and work together to develop high quality code.

· Code Reviews

· Pull Requests

· Branch Policies

We can import a git/TFVC repository directly from the sources.

It also supports the git workflow for example- When developer starts a task, they create a temporary branch when done they create a pull request and other developers can review and comment on the pull request. They also can collaborate and communicate on a secured channel until the pull request is good enough to be merged into the main branch. It totally depends upon how your team decides to work on the code and to make sure the quality of the code is very good.

So, I can say Azure Repos enables you to use any kind of Git Workflow. It can also link back to the feature task or work items so you can see the activity and status of the work (development/test) there as well.

Azure Pipelines:

Once the feature is developed and pull request is approved and merged into the main branch It need to be release. (The end user can use it). So In Order to release the code changes we need to test it and package it into an artifact, that we can deploy into environment.

Code->Test->Package->Deploy

This process of automated test and package done by using an automated CI(Continuous Integration) Process and for building this kind of pipeline Azure has Azure pipeline sections.

You can write your pipeline using Yaml file as an Iac(Infrastructure as Code) or custom pipeline by using drag and drop. We can also host the pipeline config with the rest of the project in git project.

In YAML file we have steps to run test, package the application, build docker image, push the docker image and so on. Here each steps will execute certain command to run the test to package the application and so on.

For more details I have written a medium blog : https://medium.com/@manoj-maharana4/getting-started-with-azure-bicep-16e443f60202

In Azure DevOps pipeline we have built-in task available to choose from the different use cases and that can be selected and use using the UI. Azure pipelines provides intelliSense to write our own task or drag and drop the task from the available tasks.

A task step runs a task, and steps are linear sequence of operation to execute that job.

Azure Artifacts:

Azure artifacts is a centralised place to manage all their packages from one place. As of now Azure artifacts supports the following packages.

Here you can store your artifacts produced by the CI Pipelines by easily connecting and pushing to the Azure Artifacts. So that you can store the artifacts produced by the build pipeline in the Azure Artifacts. We most of the time use Docker images to store here. (Azure Container Registry)

Azure Pipeline Stages:

After successfully build our application into a docker image we pushed it to a docker repository and now we will deploy it to the environment. It is called the Continuous Delivery (CD). Azure DevOps provided fully automated process of deploying code changes and testing it and deploy to the production. (Complete CI/CD Pipelines).

Release pipelines consist of 2 steps.

  1. Build Stage
  2. Deploy Stage

Here each stage consists of 1 or more jobs and by default they run one by one. We can use Deploy to development Stage (Deploy) for deployment purpose. Here we can change the deployment strategy, History etc.

We can write our own custom pipelines using YAML also.

When we have some live application running then we use multiple environments for QA, staging, Development, Production to test it properly and then schedule automated release.

TestàBuild The ImageàPush to RepositoryàDeploy To DevàDeploy to QAàDeploy To StagingàProduction Environment

Test Plans:

Testing is an important part of the application release process. We need to test our code like — Functional Test, Integration Test, Load Test etc. We also write our unit test cases and we want to run and test our unit test in azure Build pipeline. (For static code analysis we mostly use the tools like SonarQube , Apache Yetus etc.)

Azure Test plans are a UI based test management tools where you have unified, central view of all the test cases.

Here you can create manual or automated planned test cases like when you have some new feature requirement then tester can write and execute test cases .

Here we have Progress Report and Runs where some of the manual or automated test cases also run or execute.

You can also add, view, run the test cases from azure kanban boards.

Comparison with Other DevOps Platforms

We have some other similar platforms available in market like GitLab, Jenkins, AWS etc.

As compared with Jenkins/GitLab they are exclusively CI CD tools. They created to manage only CI CD processes but Azure DevOps is a completely devops processes platform including CI CD. (Bundle of all the processes). No need to integrate all the tools together all are working in a centralised for Azure DevOps. It also supports deploy to multiple cloud environment.

For more information you can follow Microsoft documentation:

https://learn.microsoft.com/en-us/azure/devops/?view=azure-devops&viewFallbackFrom=vsts

--

--