Click here to Skip to main content
14,027,403 members
Click here to Skip to main content
Add your own
alternative version

Stats

14K views
4 bookmarked
Posted 13 Nov 2018
Licenced CPOL

Deploying Windows Service using Azure Pipeline

, 13 Nov 2018
Rate this:
Please Sign up or sign in to vote.
Setting up automated build and deployment for Windows service using Azure Pipeline

Introduction

This article helps you to understand how to setup automated build and deployment from GIT repository using Azure Pipeline. Build, test, and deploy with CI/CD that works with any language, platform, and cloud. Connect to GitHub or any other Git provider and deploy continuously.

Create Project in GIT Repository

Create a win service project in Visual Studio and configure the git repository to push the code into GIT. Once the code pushed into GIT, the build will kick start automatically.

Create an Organization in Azure DevOps

We need to create organization and project in Azure devops in order to start using Azure Pipeline. The below Microsoft document shows the steps how to create an organization with a personal Microsoft account or a work or school account. Use your work or school account to automatically connect your organization to your Azure AD.

https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/create-organization?view=vsts

Follow the above link to complete the organization setup and create the project. Once this step is completed, we are ready to setup our first build pipeline.

Setup the Build Pipeline

I created a project named Main. Go to the overview page of the project and then choose Pipelines -> Builds -> New -> New build pipeline

New window will be opened to choose source branch, repository and the source branch for build. Select the options as below according to your project.

Choose the .NET Desktop template since I can make use of most of the pre-defined pipeline steps which fit for my windows service build, enter the name of the pipeline and choose any given Microsoft hosted agent or you can choose your own job (Default - No agents). For this example, I am using the Microsoft hosted agent (Hosted VS2017) which is a good fit for my build. To understand more about agent pools, click here.

.NET Desktop template has the list of build_pipeline5.JPG default jobs, for this project, I just leave with the default values for Nuget, Nuget restore, Build solution and VsTest tasks. If you don't want any of these tasks, you can just select the specific task under the agent and remove it.


Choose the Publish symbols path task and enter the details as below and leave the other fields with the default values.

Choose the Copy Files task and enter the information as below and leave the other fields with the default values.

Choose the Publish Artifact task, enter the information as below and leave the other fields with the default values.

Then click Save.
Get the status batch (refer to the section Get the status batch in this Microsoft documentation) and add into the README.md file in github branch as below.

Choose the trigger menu and select Enable continuous integration option and save it.

First build will be queued and started. Build is triggered and succeeded. Now we automated the build using Azure Pipeline. Hereafter, whenever there is a change in the code, build will be triggered automatically.

Create Deployment Groups and Provision Agents 

To access the target server to deploy application, we need to create deployment group. Deployment group is a logical set of deployment target machines that have agents installed on each server.
Follow this link to create deployment group and provision agents in the VM.
In this stage, deployment group is created in Azure DevOps and the agent installation script is run successfully in the target machine. Next, we proceed to setup the release pipeline.

Setup the Release Pipeline 

Follow the below steps to setup the release pipeline.

  1. Choose release pipeline -> New -> New release pipeline -> Select template -> Choose Empty Job

  2. Select artifact task and fill in the information as below and click add. This is where we configure the build artifact as the source for the release.

  3. Enable the continuous release as below. It is applicable mostly for SIT/UAT environments. For production environment, it will not be the case as we deploy based on schedules.

  4. Select view stage tasks and add/modify the below tasks in sequence. Refer to the below screenshots. Select stage task and add a deployment group job. Once added, select the deployment group job and update the information as below and leave other fields with the default values.

  5. Select the Agent job and update the information as below.

  6. Install WinRM File Copy task template from the market place and add this task by clicking Add a task to Agent job.

    • DisplayName can be any name
    • Source is the path where the artifact resides
    • Machine is the Virtual Machine IP (Target server IP)
    • Enter the VM Admin Login and Password
    • Virtual machine folder path where you want to host your windows service
  7. Add Command Line task and update the template as below:

    This SC commands helps to stop, delete, install and start the windows service in the Virtual Machine. You can modify the scripts according to your needs.

  8. Click Save and choose Release to start deploying the windows service to the target server.

Here you go! Successfully deployed the win service into the virtual machine.

Points of Interest

It's interesting when I started exploring Azure devops, it makes life easy :). Lot more to learn and make use of it in your projects.

This article makes you understand how to setting up the CI/CD pipeline. You can experiment other futures of Azure DevOps and strengthen your DevOps skills .

Happy learning! Any improvements on this article, please comment below.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Prabakaran Rajendran
Technical Lead
Singapore Singapore
11+ Years of IT experience in Application software development and having vast experience in Enterprise applications integration, Desktop, Client Server, Web and SOA architecture.
Experienced lead developer and consultant, A Microsoft Certified Solutions Expert and a Certified Professional Scrum Master.

You may also be interested in...

Pro

Comments and Discussions

 
QuestionError - The RPC server is unavailable. Cmd.exe exited with code '1722' Pin
Nitin Kadam26-Feb-19 8:13
memberNitin Kadam26-Feb-19 8:13 
Hello,

"Error - The RPC server is unavailable. Cmd.exe exited with code '1722'"

I am getting above error when stopping a window service with command line script task.
I used this command - sc \\ip stop "Data Sync".

I have tried the same command from my local machine and its working fine.
AnswerRe: Error - The RPC server is unavailable. Cmd.exe exited with code '1722' Pin
Prabakaran Rajendran17-Mar-19 19:28
professionalPrabakaran Rajendran17-Mar-19 19:28 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web02 | 2.8.190419.4 | Last Updated 14 Nov 2018
Article Copyright 2018 by Prabakaran Rajendran
Everything else Copyright © CodeProject, 1999-2019
Layout: fixed | fluid