Written By:
Sathesh R
I have started my career as a trainee system administrator in Optisol. Now, Around 7+ years of experience in windows/cloud administration, Azure DevOps engineer, build and release management process, building and deploying applications by adopting DevOps practices such as Continuous Integration (CI) and Continuous Deployment (CD)in runtime with various tools like Git, VSTS, Docker, Azure Kubernetes and managing cloud services with Azure &AWS.
Azure is a world-class cloud for hosting virtual machines running Windows or Linux. Whether you use ASP.NET, Java, Node.js, or PHP to develop applications, you will need a continuous integration and continuous deployment (CI/CD) pipeline to push changes to these virtual machines automatically.
Azure Virtual machines (VM) offer great flexibility for hosting web applications. A developer/engineer is able to configure and control every piece of software and every setting that the application needs to run. Azure, one of the largest cloud hosting platforms, has virtual machine offerings for both Linux and Windows-based operating systems.
Azure DevOps provides the CI/CD pipeline, starting with a Git/VSTS repository for managing your application source code and infrastructure code (ARM templates), a Build system for producing packages and other build artifacts, and a Release Management system for setting up a pipeline to deploy your changes through dev, test, and production environments. The pipeline updates your infrastructure as necessary in each environment and then deploys the updated build.
There are three key distinct advantages of using Azure DevOps pipelines:
Version control system:
Azure Pipelines integrates with GitHub, GitHub Enterprise, Azure Repos Git & TFVC, Bitbucket Cloud, and Subversion.
Language and application types:
We can use Azure Pipeline with most application types and languages, such as Java, JavaScript, Node.js, Python, .Net, C++, Go, PHP, and Xcode.
Deployment target:
We can use Azure Pipelines to deploy our code to multiple targets. Targets include – container registries, virtual machines, Azure services, or any on-premises or cloud target.
Azure DevOps CICD Process for Deploy Application in IIS Website on VM’s:
Azure VM IIS Website Deployment Strategy
- The developer checks in the source code to the Azure code repository.
- Azure Continuous Integration pipeline triggers the build by cloning the application code from Azure repo to either Microsoft hosted build agent or self-managed build agents.
- Azure build agents are going to build the job and generates deployable artifacts, which can be pushed to a drop location in artifact staging directory.
- Continuous deployment trigger orchestrates the deployment of application artifacts with environment-specific parameters.
- Once the release has run successfully, view the IIS website deployed on Azure Virtual Machine.
- The Logs tab will provide details of the entire release process steps to all environments run to deploy the web application to Azure.
Azure DevOps Build Pipeline for Continuous integration:
Continuous Integration or CI is a process when every time a developer commits or delivers source code changes to the version control repository, in this case, it is the Azure DevOps repo in which the build is performed either on every check-in or using a schedule.
Azure Deployment Group:
Deployment groups in Azure Pipelines make it easier to organize the servers that you want to use to host your app. A deployment group is a collection of machines with an Azure Pipelines agent on each of them. Each machine interacts with Azure Pipelines to coordinate the deployment of your app.
Azure DevOps Release Pipeline for Continuous Deployment:
Since the build artifacts are available in the drop folder as in the build definition the release definition which we will create now for deployment will pick up the artifacts and then deploy them as an Azure VM IIS web sites.
Release pipelines in Azure Pipelines help your team continuously deliver software to your customers at a faster pace and with lower risk. You can fully automate the testing and delivery of your software in multiple stages all the way to production or set up semi-automated processes with approvals and on-demand deployments.