Blog Post

Healthcare and Life Sciences Blog
3 MIN READ

Setup Azure DevOps Self Hosted Agent On-Premise & Troubleshooting Guidelines - Part 2

VinodSoni's avatar
VinodSoni
Icon for Microsoft rankMicrosoft
Oct 16, 2023

Introduction:

Azure Pipelines provides a powerful and flexible platform for continuous integration and deployment. While Microsoft offers hosted agents for executing pipeline tasks, there are scenarios where a self-hosted agent becomes necessary. In this blog post, we will walk you through the process of creating a self-hosted agent for Azure Pipelines, empowering you with the ability to run your pipelines on your own infrastructure. Let's dive in!

 

Prerequisites:

 

Before we get started, ensure that you have the following prerequisites in place:

  1.      An Azure DevOps account.
  2.      Access to the machine that will serve as your self-hosted agent.
  3.      Administrator privileges on the machine.

 

Step 1: Install the Azure Pipelines Agent

To begin, we need to install the Azure Pipelines agent on the machine that will act as the self-hosted agent. Here's how you can do it:

  1.      Open your web browser and log in to your Azure DevOps account.
  2.      Navigate to your Azure DevOps project and click on Project settings in the left side of the page.
  3.      Click on Agent Pools under Pipelines and click on Add pool (e.g. Demo-SH)

 

 

 

  1.      Select Pool-type as Self-hosted, give it a name and click on Create. You can grant access to all pipelines if you want that other team members want to run their build/release pipeline’s job on this agent.

 

 

 

  1.      Click on the created agent.

 

  1.      Click on New agent. It will show the below screen. We just have to follow the steps to create the agent. Click on the Download button to download the agent.

 

 

Step 2: Configure the Self-Hosted Agent

Once the agent package is downloaded, we need to configure it to connect with your Azure DevOps account:

 

  1.      Create a agent directory and extract the downloaded agent package to a directory on your machine as shown in above screenshot . I have extracted the files in the below directory.

 

 

  1.      Open a terminal or command prompt and navigate to the extracted agent directory. Make sure to run the terminal or command prompt as Administrator.
  2.      Run the configuration script by executing the following command:
  •        On Windows: “config.cmd”
  •        On Linux or macOS: “./config.sh”
  1.      The configuration script will prompt you for your Azure DevOps account URL and a personal access token (PAT).
  •        To generate a PAT, go to your Azure DevOps account, click on the small icon on the left side of your profile picture in the top-right corner, and select Personal access tokens from the dropdown menu.

 

 

 

  •        Generate a new token with appropriate permissions for the agent.

 

 

 

  •        After clicking the Create button, you will come to other screen where the PAT token will be shown. You just have to copy that. Remember that the token will be shown only once.
  1.      After generating the token above, enter the details on the command prompt.

 

 

 

  1.      After entering the PAT, it will ask to enter the name of agent pool. Enter the name of the pool, which we have created above.
  2.      Now, it will ask for agent name and few more details.

 

 

 

  1.      I have given the permission to run the agent as a service in my machine. I can go to Services and see that.

 

 

 

  1.      After completing the configuration, the agent will register itself with the specified agent pool in Azure DevOps. Now, if you go back to your agent, you will see one agent.

 

 

Step 3: Use the Self-Hosted Agent in Pipelines

Now that the self-hosted agent is up and running, you can start leveraging it in your Azure Pipelines:

  1.      Open your Azure DevOps project and navigate to your pipeline.
  2.      Edit your pipeline configuration or create a new one.
  3.      If you click on the stage, and then click on Agent job. In the Agent selection dropdown, you will get your self-hosted agent as an option. Just select that.

 

 

  1.      When you run the pipeline, Azure Pipelines will allocate a job to the self-hosted agent and execute the defined tasks on the configured machine.

 

Conclusion:

 

Congratulations! You have successfully created and configured a self-hosted agent for Azure Pipelines. By following these steps, you can harness the power of your own infrastructure to execute pipeline tasks, ensuring greater control and flexibility in your continuous integration and deployment workflows. Explore the possibilities and take your Azure Pipelines to the next level with self-hosted agents. Happy coding!

 

Published Oct 16, 2023
Version 1.0
  • Hello, we are deploying on-prem ADO pipeline agents and having troubles finding the sweet spot of the number of agents we have running as services on VMs in our environment. If we run pipelines with 2 agents it takes all the resources on the server VM. If we bump the agents used up to 4 in the agent pool, it takes significantly longer to run our pipelines. Is there a guide to how many agents per server, resource consumption, etc.?

  • biplab1980's avatar
    biplab1980
    Copper Contributor

    Hi,

     

    Our company has installed and configured Azure DevOps server 2022 on Prem which is accessible with http://xxx/xxx and not https. While following the above steps for configuring agent pool and self hosted windows agent, after running config.cmd and entering the server url, enter authentication type is coming as (press enter for Integrated), it's not giving the PAT option.

     

    Went through this article 

    https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/agent-authentication-options?view=azure-devops 

    and pressed enter after which the register agent steps came by and I filled in all the information except that for
    Run agent as a service (Y/N) - pressed enter for No
    Enter enable SERVICE_SID_TYPE_UNRESTRICTED for agent service (Y/N) - pressed enter for No

    Did I do something wrong in the above steps ?

    After this the normal cmd prompt was available and I ran the command .\run.cmd which finally connected to the server and gave the response Listening for jobs. After this I checked the agent under the newly created agent pool and it was Online and green in colour.

     

    Will this agent be able to run jobs properly or it will throw error because of any error in configuration as explained above ? Pls advice.