Welcome to 5 Part blog Series that covers Azure DevOps.
Part 1 - Introduction of Azure DevOps and Basic terminologies. Part 2 - Understanding and setting up CI/CD through VSTS on Azure Part 3 - Setting up CI / CD of .NET Core running on Linux on Azure Part 4 - Setting up CI / CD of .NET application using Azure App Service. Part 5 - Setting up CI / CD of Node.js application using Azure App Service.
What is DevOps ?
There are many definitions of DevOps but this one by Donovan Brown is my favorite.
DevOps is not just automation or infrastructure as code. DevOps is people following a process enabled by products to deliver value to our end users.
DevOps brings together people, processes and technology, automating software delivery to provide continuous value to your users. With Azure DevOps solutions, deliver software faster and more reliably—no matter how big your IT department or what tools you are using.
Continuous integration (CI)
Take advantage of continuous integration to improve software development quality and speed. When you use Visual Studio Team Services or Jenkins to build apps in the cloud and deploy to Azure, each time you commit code, it is automatically built and tested—so bugs are detected faster.
Continuous delivery (CD)
Ensure that code and infrastructure are always in a production-deployable state, with continuous delivery. By combining continuous integration and infrastructure as code (IaC), you will achieve identical deployments and the confidence you need to manually deploy to production at any time.
A sequence of orchestrated, automated tasks implementing the software delivery process for a new application version. Each step in the pipeline is intended to increase the level of confidence in the new version to the point where a go/no-go decision can be made. A delivery pipeline can be considered the result of optimizing an organization’s release process.
Continuous deployment with CI/CD
With continuous deployment, you can automate the entire process from code commit to production if your CI/CD tests are successful. Using CI/CD practices, paired with monitoring tools, you will be able to safely deliver features to your customers as soon as they are ready.
Provisioning is the process of preparing new systems for users (in a Continuous Delivery scenario, typically development or test teams). The systems are generally virtualized and instantiated on demand. Configuration of the machines to install operating systems, middleware, etc. is handled by automated system configuration management tools, which also verify that the desired configuration is maintained
A term for establishing and maintaining consistent settings and functional attributes for a system. It includes tools for system administration tasks such as IT infrastructure automation.
Deployment Management aims to plan, schedule and control the movement of releases to test and live environments.
Test-Driven Development (TDD)
A development practice in which small tests to verify the behavior of a piece of code are written before the code itself. The tests initially fail, and the aim of the developer(s) is then to add code to make them succeed. Check out Xebia Labs’ testing dashboard and analytics tool here.
Tools or frameworks that allow source code to be automatically compiled into releasable binaries. Usually includes code-level unit testing to ensure individual pieces of code behave as expected.
Code-level (i.e., does not require a fully installed end-to-end system to run) testing to verify the behavior of individual pieces of code. Test-driven deployment makes extensive use of unit tests to describe and verify intended behavior.
Application Release Automation (ARA)
Tools, scripts or products that automatically install and correctly configure a given version of an application in a target environment, ready for use.
A go-live strategy in which a new application version is released to a small subset of production servers and heavily monitored to determine whether it behaves as expected. If everything seems stable, the new version is rolled out to the entire production environment.
A go-live strategy in which code implementing new features is released to a subset of the production environment but is not visibly, or only partially, activated. The code is exercised, however, in a production setting without users being aware of it.
Testing of the end-to-end system to verify that existing functionality has not been negatively impacted by changes to the application.
A technique in which a new feature, or different variants of a feature, are made available to different sets of users and evaluated by comparing metrics and user behavior.
Typically high-level testing of the entire system carried out to determine whether the overall quality of both new and existing features is good enough for the system to go to production.
An agent is a program installed on specific physical servers in order to handle the execution of various processes on that server.
A type of agent used in continuous integration that can be installed locally or remotely in relation to the continuous integration server. It sends and receives messages about handling software builds.
Infrastructure as Code
A system configuration management technique in which machines, network devices, operating systems, middleware etc. are specified in a fully automatable format. The specification or “blueprint” is regarded as code that is executed by provisioning tools, kept in version control and generally subject to the same practices used for application code development.
Let us understand the Steps involved in setting up CI/CD for Azure VMs
- Change application source code
- Commit Application Code and Azure Resource Manager (ARM) Template
- Continuous integration triggers application build and unit tests
- Continuous deployment trigger orchestrates deployment of application artifacts with environment specific parameters
- Deployment to QA environment
- Deployment to staging environment
- Deployment to production environment
- Application Insights collects and analyses health, performance and usage data
- Review health, performance and usage information
- Update backlog item