在 Azure Pipelines 中至少需要一个编译服务器的 Agent 才能编译代码或发布软件。Azure DevOps 本身已经提供了一个 Agent,但出于各种理由(需要特殊的编译打包环境、需要更高的性能、需要更多的控制权等)很多时候需要一些自托管代理。这篇文章将讲解如何在 Windows 系统上安装及配置 Build Agent(主要基于之前几篇文章所构建的环境)。
首先进入要安装 Build Agent 的 Windows 系统,然后访问 Azure DevOps,在首页的左下角点击 Organization settings,进入 Organization Settings 页面后选中左侧菜单的 Agent pools 菜单项,进入 Agent pools 页面,这时候可以看到已经有两个 Agent Pool,分别是 Default 和 Azure Pipelines。
选中 Default 进入 Agent Pool 的详细页面,然后点击右上角的 Net 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。
在开始配置 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:
接下来将介绍 config 中的各种选项
_work
。所有流程跑完以后截图如下(因为我在中文 Windows 上截的图,所以参数的名字有出入):
回到 Default 这个 Agent Pool 的详细页面,切换到 Agents 页面,可以看到刚刚新添加的 Agent,可以通过将 Enbabled 这个开关关闭这个 Agent,也可以在 More... 菜单中删除这个 Agent。
进入这个 Agent 的详细页面,可以看到 Jobs 和 Capabilities 两个页面,其中 Jobs 是已经安排的工作,不过现在是空的。而 Capabilities 是这个 Agent 的各项能耐,例如安装的 .NET 版本,之类的。
有了新的 Agent,就需要将 Pipeline 使用的 Pool 改为 Agent 所在的 Pool。在 YAML 中将这段:
pool:
vmImage: 'windows-latest'
作如下修改:
pool: 'Default'
即可把 Pipeline 使用的 Agent Pool 指定为 'Default'。重新 Run 一次这个 Pipeline,之后可以在 Agent 的 Jobs 页面看到运行的 Job 的内容。
有些情况下这个 Pipeline 会保这种错:
This pipeline needs permission to access a resource before this run can continue
应该是权限的问题,需要打开'Default' 的详细页面,选中 Security 标签页,然后打开 Grant access permission to all pipelines(为所有管道授予访问权限),这个操作很无脑,即所有权限都满上。再次运行 Pipeline 就不会报错了。
这篇文章简单介绍了如果自托管 Windows 代理,更多的内容请参考下面的文档:
Deploy an Azure Pipelines agent on Windows - Azure Pipelines Microsoft Docs