Are you interested in learning about the tool that helps to automate and manage the complete software development lifecycle? Well, Azure DevOps is the answer for you, but before we dive deeper into understanding what Azure DevOps is and how it helps the teams during product development and release, let’s first try to build our understanding on DevOps.
DevOps is a combination of both development (Dev) and operations (Ops) practices that bring in people, processes, and technology together to continuously provide value to the organizations in their endeavor to make their business processes faster and more efficient. DevOps allows the software development teams to plan smarter, collaborate better, and ship the final product in shorter durations for a faster time to market with a set of modern services.
DevOps enables different teams like development, IT operations, quality assurance, as well as security teams to collaborate together for the production of more robust and reliable products. Organizations building a DevOps culture gain the ability to quickly and efficiently respond to customer needs. There is a wide range of DevOps tools available in the market today with almost similar sets of abilities. These include Jenkins, Git, Gitlabs, Github, Bitbuckets, etc. They provide certain additional functionalities such as version control, code repository, etc. along with DevOps capabilities, but they lack end-to-end abilities to manage the software development lifecycle. This is where Azure DevOps comes into the picture.
What is Azure DevOps?
Azure DevOps was launched in October 2018. It’s a Software as a Service platform that comprises a complete set of tools that not just provides the DevOps capabilities, but also provides the abilities using which the complete life cycle of the product development can be managed.
One of the best parts about Azure DevOps is its flexibility as it can also integrate with other tools in the market for shared management of the process flow and orchestrates the complete DevOps tool chain. This helps in leveraging existing tools already being used within the organization. There are three main reasons why Azure DevOps has an upper hand when compared to other existing tools in the market. They are:
- Flexible – Azure DevOps flexibility in a way that each of the services of Azure DevOps can be used independently and integrate it with the existing tools within the organization that is being currently used, thereby, making adaptability easier.
- Platform Independent – Although developed by Microsoft, Azure DevOps does not focus on only Microsoft-built platforms and language. It has been designed to work with any platform (this includes Linux, Windows, and macOS)
and language (this includes .Net, Java, PHP, Python, C, C++, iOS, Android, and NodeJS).
- Cloud Independent – Azure DevOps Continuous Integration and Delivery model is supported not just for Azure, but also extends to Amazon Web Services (AWS) and Google Cloud Platform (GCP).
Benefits of Azure DevOps
Apart from the capabilities mentioned in the previous section, there are three main benefits of using Azure DevOps when compared to other tools with similar offerings:
- Reliability – Azure DevOps is a SaaS offering, which is globally available and promises 99.9% uptime SLA, which makes it a reliable DevOps tool. It also provides easy scalability and 24×7 support.
- Timely Patching and Upgrades – As Azure DevOps is a SaaS offering, patching and upgrades are being taken care of by Microsoft, thereby taking off the overhead of the IT teams and making it much easier to use.
- Quick Feature Upgrades – The road map for Azure DevOps has already
been published by Microsoft and the new features are released rapidly, in a short span of time (usually 3 weeks).
Azure DevOps Features
As already mentioned, Azure DevOps provides the ability for end-to-end management of the product development life cycle, it comprises the below services.
- Azure Boards – is a set of Agile tools that supports planning and complete tracking of the project development progress, defects raised, as well as other issues, i.e., complete project management can be done using Azure Boards. At the backend it has a native support for Scrum and Kanban for Agile. It provides dashboards with integrated reporting that are customizable and have the ability to scale as per business demands.
- Azure Pipelines – being a DevOps tool, it definitely provides the Continuous Integration and Continuous Delivery (CI/CD), also known as CICD pipelines to support the build and release of the application from development to production. We will see this in action in the demo in the following sections.
- Azure Repos – is a set of version control tools that can be used to manage codes and their different versions by the development team. It, therefore, helps in tracking the changes made in the code over the period of time with different versions. When the changes are made to the code, DevOps tool takes the snapshots of the files being checked-in so that these changes can be tracked. These snapshots are saved permanently. Additionally, it helps coordination and collaboration between teams working on the same project. Azure Repos provides two types of version control. They are:
- Git: Distributed version control
- Team Foundation Version Control: Centralized version control
- Azure Artifacts – allows the teams to easily package the dependencies and other artifacts required for the application deployment and its functionality, thus making it easier to publish and consume the application. There can be different kinds of artifacts such as – Build Artifacts, Maven, Npm, Nuget, PyPI, Universal Packages, and Symbols
- Azure Test Plans – are a set of rich and powerful tools to test your application that includes manual/exploratory testing and continuous testing. They are easy to use, and browser-based test management solution providing all the capabilities required for different testing methodologies
In essence, DevOps is a set of practices that influences all the phases of the application development life cycle that includes planning, development, delivery, and operations and each phase relies on the other phases.
DevOps helps in reducing time between committing a change to the system and pushing the change into the production after passing different stages, while still ensuring high quality. These practices are – Continuous Integration and Continuous Delivery (CI/CD), Version control, Agile Software Development, Infrastructure as Code, Configuration Management, and Continuous Monitoring.
Create and Configuring CI and CD Pipelines with Azure DevOps
We had discussed the core features of Azure DevOps. One of those features is Azure Pipelines. It aims at continuous Integration and Continuous Delivery to persistently build and test the code and finally ship a high-performing, high-quality product. These pipelines can be defined either from the user interface or by using YAML syntax.
Continuous Integration produces deploy-able code, infrastructure and other artifacts to be deployed, whereas Continuous Delivery helps in deploying the integrated and built code into different delivery stages as new versions of the product.
In the following section, we will try to configure a CICD pipeline using YAML. The pipeline is defined in a YAML file called azure-pipelines.yml.
We will follow the below steps to configure the CICD pipeline:
- Create Organization
- Create a new Project
- Create the .Net Core Pipeline
- Managing Pipeline using Azure CLI
- Run a Pipeline
- Update Pipeline
- Show Pipeline
- Sign in to your Azure DevOps using the URL – devops.azure.com
- Click on the New Organization link and create your organization and navigate to your project. Click on Continue when prompted for Terms and Conditions
- In the screen that appears, fill in the name of the organization, location, and the captcha challenge. Then click on Continue.
Create a new Project
- After the organization has been created, you will also receive an email confirmation of the same and will be redirected to the page where you can create a new project.
- Create the project as shown in the screenshot below. Enter project name, choose the visibility, and then from the advanced tab choose Git from version control and Scrum for the work item process
- Click on Create Project
- You will then be redirected to the organization dashboard showcasing the new project.
Create the .Net Core Pipeline using YAML File
- Click on the project name from the dashboard
- In the screen that appears, go to Pipelines, and then select New Pipeline.
- Go through the steps of the wizard by first choosing GitHub as your source
- You will be prompted to authorize the access of Azure Pipelines to your GitHub repository. You may be redirected to GitHub to sign in. If so, enter your GitHub Credentials.
- Click on Authorize AzurePipelines
- Select your repository when the list of repositories appears.
- You may be redirected to GitHub and prompted to install the Azure Pipelines app. If so, choose Approve & install.
- When the Configure tab appears, select ASP.NET Core
- Now that your pipeline appears as a YAML file, you can take a look and once done click on Save and Run
- A popup appears, where you can enter your message before you save the pipeline. After entering the message, click on Save and Run again. For now you can commit to the master branch.
11)The basic pipeline is now ready to be used to build and run the code. You will see the below screen after the pipeline has been deployed.