在 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 的详细页面,然后点击右上角的“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。
在开始配置 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 中的各种选项:
4.1 身份验证
4.2 Pool 和 Agent 的名字
4.3 设置 Agent
_work。
所有流程完成后的截图如下(因为我在中文 Windows 上截的图,所以参数的名字有所不同):
回到“Default”这个 Agent Pool 的详细页面,切换到“Agents”页面,可以看到刚刚新添加的 Agent。可以通过关闭“Enabled”开关来禁用这个 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”。重新运行这个 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
a
zure-pipelines-agent_README.md at master