Introduction of Azure DevOps Pipelines
Table of Content
Technology ingestion happens now and then. The main reason for discovering a new way or method to work is to decrease human efforts. As humans, our efforts are always driven towards excellence that would increase productivity and make the process simpler than ever before. Various tools, software, and apps we use in day to day life to keep our things managed. But even software app development and deployment needs some toolchain that keeps your source code in a private repository on the cloud, keep track of Task-list, generate reports, can do agile planning, provides an integrated testing solution that would help in the deployment process and that’s where Azure DevOps – Software as a Service (SaaS) platform from Microsoft comes to into picture. The launch of Azure DevOps was around 2018 and hence it is not a newbie in the world of technology. Its origin can be traced using the Visual Studio Team system launched in 2006.
What is Azure DevOps?
Azure DevOps is an all-inclusive package offering a wide-ranging service that covers the entire SDLC or App development life cycle. Let’s see some substantial features the Azure DevOps:
- Azure Boards: Allows Work item tracking, Agile planning, Power BI visualization, and similar other reporting tools.
- Azure Pipelines: Defines CI/CD- Continuous Integration and Continuous deployment process with support for containers and Kubernetes.
- Azure Repos: Provides full-support for cloud-hosted private repositories.
- Azure Artifacts: Package management Support for Maven, npm, NuGet and Python package feeds from private or public sources.
- Azure Test Plans: Provides integrated planning and investigation of testing solutions.
Azure DevOps is the feature-rich mature model offered by Microsoft for businesses to simultaneously manage multiple tasks. Let us discuss Azure pipelines.
What is Azure Pipeline?
Azure Pipeline is an automated set of processes that helps developers to compile, build, and deploy codes on other computation platforms. It is a continuous delivery tool similar to open source Jenkins or CodeShip. The sole goal of this pipeline is that there is no manual intervention, all the changes are automatically executed. Whenever humans are handling the process, there is a possibility of human errors while doing the same repetitive boring tasks, but with automation, it works seamlessly once it’s configured.
A pipeline is normally broken down into the following categories:
- Source Control
- Build Tools
- Package creation
- Configuration management
Azure Pipeline is based on the strong foundations of CI/CD pipelines which continuously test, build and deploys. They also perform continuous deliveries automatically by testing and deploying the codes to the desired targets.
Continuous Integration (CI)
Continuous Integration helps to catch the bugs and issues in the early stage of the development cycle when fixing errors is simpler and fast. Developers can check their codes in version-controlled repositories, check-in their code to test and locate errors. The main benefits are:
- Minor changes are easier to merge in large codes.
- Easier for big teams to see what each one has been working on.
- Locate bugs and easier to fix.
- Continuous code compilation and testing.
- Making the integration process smooth thus improves productivity.
Continuous Delivery (CD)
Continuous Delivery helps developers to deliver new features, fix bugs and configure changes reliably and quickly. Continuous Delivery pipelines provide routine deliveries as per configuration or can also be called on-demand. The key benefits are:
- Decreases risks in releases.
- Faster delivery of bug fixes and issues.
- Delivery can be feasible at any scale.
Azure Pipelines provides YAML syntax and a classic interface to setup CI-CD pipelines.
Define pipelines using YAML syntax
The pipeline depends on the versioning of the code, similar codes will have a similar branching structure. You can set triggers to start the process when any pull request is accepted. You can trigger the build process and identify issues in integration with your existing codebase.
azure-pipelines.yml can be used to add your pipeline in a YAML file with your application.
These are the high-level steps:
- Configure Azure Pipeline to use your repository.
- Edit the YAML file to specify your build.
- Push your code in a specific branch to trigger the process.
Define pipelines using Classic Interface
Users can define the pipeline in the Azure DevOps portal with the classical user interface editor. They can also define a “Build Pipeline” for such activities as to build and test your code, and then publish artifacts. Additionally, they can also define the “Release Pipeline” to consume these artifacts and deploy them in targets.
These are the high-level steps:
- Configure Azure Pipeline to use your repository.
- Define build and release pipelines using the Azure DevOps web portal.
- Push your code to a specific branch to trigger the process.
Here, we saw high levels of steps to define pipelines in both ways. Let see a few terms to be used in Azure Pipelines before we jump to create a new pipeline.
Key components of Azure DevOps Pipelines
- A triggerinitiates a Pipeline to run.
- A pipeline can have many stages. A pipeline can deploy to single or multiple environments.
- A stage can be specified to manage jobs in a pipeline and each stage has various jobs.
- Each job runs on one agent. It’s also possible that a job doesn’t have an agent.
- Each agent runs a job that may have various steps.
- A step can be anything like a script or task and it is the compact part of a pipeline.
- A task is a pre-bundled script that acts like to publish a build artifact or to call a REST API.
- A run publishes a bunch of files or bundles called an artifact.
An Agent is a computing architecture with installed agent software that runs a set of steps when a job attached with the agent runs. For detailed information on this component check- Build and release agents.
It specifies a set of validations needed before a deployment can be executed. It is used to manage deployments to production environments. Once checks are configured, the pipelines will pause and stop before starting the deployment process. They will only restart the process once all the uncheck options are checked and completed successfully. For any information, visit Define Approvals and checks.
It is a bundle of packages or files published by build pipelines. Learn more about Artifacts in Azure Pipelines.
It is a series of target machines that have agents installed. Setting a deployment target for pipelines in machines is easy with the deployment group. See more about deployment groups.
When a bundle of different resources comes together and deploys the application then it is called an environment. It can be a collection of virtual machines, containers, web apps or any services.
The stage consists of many jobs, each job is running on an agent. Job defines an execution boundary for a set of steps to be performed.
The Pipeline is a part of the CI/CD process where there are numerous stages. You can imagine it as a workflow in a sequential form where you test, build and deploy your app.
A run command is used to implement any function in a pipeline. It gathers the logs linked with the steps currently running and the results of the tests are currently implemented. In the course of a run, Azure Pipelines will first evaluate the pipeline and then transfer the run to various agents. Jobs will be executed by each agent. See more about the pipeline run sequence.
A script can be a Bash, command line or PowerShell that runs code in your pipeline.
In a pipeline, there is a logical perimeter for monitoring performance which is called Stage.
A task is a bundled script or method that has been engrossed with a pair of inputs.
In the entire discussion of Azure DevOps Pipelines, we understood the variety of services that they are capable of offering to streamline overall operations and optimize each process. This process will equally divide all the workflows into manageable formats using a robust and scalable Azure platform to deploy solutions in pipelines using continuous integration and continuous deployment methods.