- 编译服务器
在 azure pipelines 中,至少需要一个编译服务器的 agent 来进行代码编译或软件发布。虽然 azure devops 提供了默认的 agent,但出于各种原因(如需要特定的编译打包环境、更高的性能或更多的控制权),通常需要自行托管代理。本文将详细介绍如何在 windows 系统上安装和配置 build agent(主要基于之前几篇文章所构建的环境)。
- 下载 Agent 安装程序
首先,进入需要安装 Build Agent 的 Windows 系统,然后访问 Azure DevOps。在首页的左下角点击“Organization settings”,进入“Organization Settings”页面后,选择左侧菜单中的“Agent pools”选项,进入“Agent pools”页面。这里可以看到已有的两个 Agent Pool,分别是“Default”和“Azure Pipelines”。
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870462888.jpg)
选择“Default”进入 Agent Pool 的详细页面,然后点击右上角的“New agent”按钮,会出现一个下载并安装 Agent 的教程页面。点击“Download”将 Agent 安装包下载到“downloads”目录。
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870581075.jpg)
然后以管理员身份打开 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。
- 创建 personal access token
在开始配置 Agent 之前,如果你的 Windows 系统与 Azure DevOps 不在同一个域中,你需要一个 personal access token 来获得访问 Azure DevOps 的权限。本节将介绍如何获取这个 token。
点击页面右上角的“user settings”按钮,在弹出的菜单中选择“Personal access tokens”。
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870572025.jpg)
在“Personal Access Tokens”页面点击“New Token”按钮。
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870541582.jpg)
在弹出的表单中填写一个名称,然后点击“Show all scopes”按钮:
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870561818.jpg)
在“Agent Pools”中选择“Read & manage”,然后点击“Create”按钮创建 token:
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870584154.jpg)
创建 token 后记得复制并保存,因为以后将不再显示这个 token:
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870547242.jpg)
- 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 上截的图,所以参数的名字有所不同):
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870649229.jpg)
- 管理 Agent
回到“Default”这个 Agent Pool 的详细页面,切换到“Agents”页面,可以看到刚刚新添加的 Agent。可以通过关闭“Enabled”开关来禁用这个 Agent,也可以在“More...”菜单中删除这个 Agent。
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870640261.jpg)
进入这个 Agent 的详细页面,可以看到“Jobs”和“Capabilities”两个页面,其中“Jobs”是已经安排的工作,现在是空的。“Capabilities”是这个 Agent 的各项能力,例如安装的 .NET 版本等。
![[Azure DevOps] 如何安装并配置 Build Agent](https://img.php.cn/upload/article/001/503/042/175806870687865.jpg)
- 修改 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 就不会报错了。
- 最后
本文简要介绍了如何在 Windows 上自托管代理,更多内容请参考以下文档:
Deploy an Azure Pipelines agent on Windows - Azure Pipelines Microsoft Docs
azure-pipelines-agent_README.md at master










