[Azure DevOps] 如何安装并配置 Build Agent

  1. 编译服务器

在 azure pipelines 中,至少需要一个编译服务器的 agent 来进行代码编译或软件发布。虽然 azure devops 提供了默认的 agent,但出于各种原因(如需要特定的编译打包环境、更高的性能或更多的控制权),通常需要自行托管代理。本文将详细介绍如何在 windows 系统上安装和配置 build agent(主要基于之前几篇文章所构建的环境)。

  1. 下载 Agent 安装程序

首先,进入需要安装 Build Agent 的 Windows 系统,然后访问 Azure DevOps。在首页的左下角点击“Organization settings”,进入“Organization Settings”页面后,选择左侧菜单中的“Agent pools”选项,进入“Agent pools”页面。这里可以看到已有的两个 Agent Pool,分别是“Default”和“Azure Pipelines”。

选择“Default”进入 Agent Pool 的详细页面,然后点击右上角的“New agent”按钮,会出现一个下载并安装 Agent 的教程页面。点击“Download”将 Agent 安装包下载到“downloads”目录。

然后以管理员身份打开 PowerShell,输入教程页面中“Create the agent”部分的内容:

PS C:\> mkdir agent ; cd agent
PS C:\agent> Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("$HOME\Downloads\vsts-agent-win-x64-2.184.2.zip", "$PWD")

这段脚本会在 C 盘创建一个名为“agent”的目录,并将刚刚下载的 Agent 文件解压到该目录。

接着输入

C:\agent> .\config.cmd
开始配置 Agent。

  1. 创建 personal access token

在开始配置 Agent 之前,如果你的 Windows 系统与 Azure DevOps 不在同一个域中,你需要一个 personal access token 来获得访问 Azure DevOps 的权限。本节将介绍如何获取这个 token。

点击页面右上角的“user settings”按钮,在弹出的菜单中选择“Personal access tokens”。

在“Personal Access Tokens”页面点击“New Token”按钮。

在弹出的表单中填写一个名称,然后点击“Show all scopes”按钮:

在“Agent Pools”中选择“Read & manage”,然后点击“Create”按钮创建 token:

创建 token 后记得复制并保存,因为以后将不再显示这个 token:

  1. Agent 中的各种选项

接下来将介绍 config 中的各种选项:

4.1 身份验证

  • server URL:Azure DevOps 的地址。
  • authentication type:有 PAT 和 negotiate 两个选择,前者需要输入 personal access token,后者需要输入用户名和密码。这里使用之前已经创建好的 personal access token。

4.2 Pool 和 Agent 的名字

  • agent pool:输入需要加入的 agent pool 的名字,直接按回车使用默认值,默认值是“Default”。
  • agent name:输入 agent 的名字,可以直接按回车使用默认名字。

4.3 设置 Agent

  • work folder:Agent 的工作目录,默认是
    _work
  • Perform an unzip for tasks for each step:一个额外的安全选项,直接回车选择默认值。
  • run agent as service:是否让 Agent 作为 Windows 服务运行。这里我选择了 Y,以便以后每次启动 Windows 时都能自动启动。
  • User account to use for the service:输入作为 Windows 服务运行时的用户名。
  • Password for the account:前面输入的用户名对应的密码。

所有流程完成后的截图如下(因为我在中文 Windows 上截的图,所以参数的名字有所不同):

  1. 管理 Agent

回到“Default”这个 Agent Pool 的详细页面,切换到“Agents”页面,可以看到刚刚新添加的 Agent。可以通过关闭“Enabled”开关来禁用这个 Agent,也可以在“More...”菜单中删除这个 Agent。

进入这个 Agent 的详细页面,可以看到“Jobs”和“Capabilities”两个页面,其中“Jobs”是已经安排的工作,现在是空的。“Capabilities”是这个 Agent 的各项能力,例如安装的 .NET 版本等。

  1. 修改 Pipeline

有了新的 Agent,就需要将 Pipeline 使用的 Pool 改为 Agent 所在的 Pool。在 YAML 中将这段:

pool:
  vmImage: 'windows-latest'

修改为:

pool: 'Default'

即可将 Pipeline 使用的 Agent Pool 指定为“Default”。重新运行这个 Pipeline,之后可以在 Agent 的“Jobs”页面看到运行的 Job 的内容。

有些情况下这个 Pipeline 可能会报错:

应该是权限问题,需要打开“Default”的详细页面,选择“Security”标签页,然后打开“Grant access permission to all pipelines”(为所有管道授予访问权限),这个操作非常简单,即所有权限都设置为最大值。再次运行 Pipeline 就不会报错了。

  1. 最后

本文简要介绍了如何在 Windows 上自托管代理,更多内容请参考以下文档:

Deploy an Azure Pipelines agent on Windows - Azure Pipelines Microsoft Docs

azure-pipelines-agent_README.md at master