活动
Self-hosted macOS agents(自托管 macOS 代理)
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019
本文提供有关将 3.x 代理软件 与 Azure DevOps Services 和当前版本的 Azure DevOps Server 配合使用的指导。 有关支持 3.x 代理的 Azure DevOps Server 版本列表,请参阅 Azure DevOps Server 是否支持 3.x 代理。
若要生成和部署 Xcode 应用,至少需要一个 macOS 代理。 此代理还可以生成和部署 Java 和 Android 应用。
备注
本文介绍如何配置 自承载代理。 如果您使用 Azure DevOps Services,且 Microsoft 托管代理 能满足您的需求,那么可以跳过设置自托管的 macOS 代理。
如果已经知道代理是什么及其工作原理,请随时跳转到以下部分。 但是,如果想要更了解其用途及其工作原理,请参阅 Azure Pipelines 代理。
- 支持的操作系统
- x64
- macOS 10.15 “Catalina”
- macOS 11.0 “Big Sur”
- macOS 12.0 “蒙特利”
- macOS 13.0 “Ventura”
- macOS 14.0 “Sonoma”
- ARM64
- macOS 11.0 “Big Sur”
- macOS 12.0 “蒙特利”
- macOS 13.0 “Ventura”
- macOS 14.0 “Sonoma”
- x64
- Git - Git 2.9.0 或更高版本(建议的最新版本 - 可以使用 Homebrew轻松安装)
- .NET - 代理软件在 .NET 6 上运行,但安装自己的 .NET 版本,因此没有 .NET 先决条件。
- TFVC - 如果要从 TFVC 存储库构建,请参阅 TFVC 先决条件。
如果要从 Subversion 存储库生成,则必须在计算机上安装 Subversion 客户端。
首次应手动运行代理安装程序。 在掌握代理的运行方式后,或如果您想自动设置许多代理,请考虑使用 无监控配置。
配置代理的用户需要池管理员权限,但运行代理的用户不需要。
代理控制的文件夹应限制为尽可能少的用户,因为它们包含可以解密或外泄的机密。
Azure Pipelines 代理是一种软件产品,旨在执行从外部源下载的代码。 它本质上可能是远程代码执行(RCE)攻击的目标。
因此,请务必考虑围绕 Pipelines 代理的每次单独使用来执行工作的威胁模型,并确定可以授予运行代理的用户、运行代理的计算机、对 Pipeline 定义具有写入访问权限的用户,以及存储 yaml 的 git 存储库,或控制对新管道的池的访问的用户组的最低权限。
最佳做法是让运行代理的标识与具有将代理连接到池的权限的标识不同。 生成凭据的用户(和其他代理相关文件)与需要读取凭据的用户不同。 因此,仔细考虑向代理计算机本身以及包含敏感文件(如日志和项目)的代理文件夹授予的访问权限会更安全。
只向 DevOps 管理员和运行代理进程的用户标识授予对代理文件夹的访问权限是有意义的。 管理员可能需要调查文件系统以了解生成失败或获取日志文件才能报告 Azure DevOps 故障。
作为一次性步骤,必须注册代理。 有权管理代理队列的人员必须完成这些步骤。 代理不会在日常操作中使用此人的凭据,但在完成注册时需要这些凭据。 详细了解代理的通信方式。
确保要使用的用户帐户具有注册代理的权限。
用户是 Azure DevOps 组织所有者还是 TFS 或 Azure DevOps Server 管理员? 如果到这一步,说明你拥有权限。
否则:
打开浏览器并导航到 Azure Pipelines 组织或 Azure DevOps Server 或 TFS 服务器的 代理池 选项卡:
(
https://dev.azure.com/{yourorganization}
) 登录到组织。选择“Azure DevOps”、“组织设置”。
选择代理池。
登录到项目集合(
http://your-server/DefaultCollection
)。选择 Azure DevOps、集合设置。
选择代理池。
选择 Azure DevOps、集合设置。
选择代理池。
选择页面右侧的池,然后单击安全性。
如果未显示要使用的用户帐户,请让管理员添加它。 管理员可以是代理池管理员、Azure DevOps 组织所有者,也可以是 TFS 或 Azure DevOps Server 管理员。
如果是 部署组 代理,管理员可以是部署组管理员、Azure DevOps 组织所有者,或者 TFS 或 Azure DevOps Server 管理员。
可以在 Azure Pipelines 的部署组页上的安全性选项卡中将用户添加到部署组管理员角色。
备注
如果看到如下所示的消息:很抱歉,无法添加标识。请尝试其他标识。,你可能已针对组织所有者、TFS 或 Azure DevOps Server 管理员执行上述步骤。 无需执行任何操作;你已有权管理代理池。
使用你已准备好权限的帐户登录到计算机,如前文所述。
在 Web 浏览器中,登录到 Azure Pipelines,并导航到 代理池 选项卡:
(
https://dev.azure.com/{yourorganization}
) 登录到组织。选择“Azure DevOps”、“组织设置”。
选择代理池。
登录到项目集合(
http://your-server/DefaultCollection
)。选择 Azure DevOps、集合设置。
选择代理池。
选择 Azure DevOps、集合设置。
选择代理池。
选择默认池,选择代理选项卡,然后选择新建代理。
在获取代理对话框中,单击 macOS。
单击“下载”按钮。
按照页面上的说明进行操作。
清除 tar 文件上的扩展属性:
xattr -c vsts-agent-osx-x64-V.v.v.tar.gz
。将代理解压缩到所选的目录中。 通过
cd
转到该目录,然后运行./config.sh
。 请确保目录的路径不包含空格,因为工具和脚本并不总是正确转义空格。
Azure Pipelines:https://dev.azure.com/{your-organization}
Azure DevOps Server:https://{your_server}/tfs
注册代理时,请从以下身份验证类型中进行选择,代理设置会提示输入每种身份验证类型所需的特定附加信息。 有关详细信息,请参阅 自建代理身份验证选项。
有关是要以交互模式还是以服务形式运行代理的指导,请参阅代理:交互与服务。
若要以交互方式运行代理,请执行以下操作:
如果一直将代理作为服务来运行,请卸载服务。
运行代理。
Bash./run.sh
若要重启代理,请按 Ctrl+C,然后运行 run.sh
将其重启。
要使用代理,请使用代理池运行作业。 如果未选择其他池,代理将位于默认池中。
对于配置为以交互方式运行的代理,可以选择让代理只接受一个作业。 若要在此配置中运行,请执行以下操作:
./run.sh --once
此模式下的代理只接受一个作业,然后正常地向下旋转(适用于在 Azure 容器实例等服务上运行)。
我们提供 ./svc.sh
脚本,以便以 launchd
LaunchAgent 服务的形式运行和管理代理。 配置代理后会生成此脚本。 该服务有权访问 UI 以运行 UI 测试。
备注
如果你更喜欢其他方法,则可以使用你喜欢的任何服务机制。 请参阅服务文件。
在以下部分中,将替换这些令牌:
{agent-name}
{tfs-name}
例如,已使用名称 our-osx-agent
配置代理(如上例所示)。 在以下示例中,{tfs-name}
是:
Azure Pipelines:组织的名称。 例如,如果连接到
https://dev.azure.com/fabrikam
,则服务名称将变为vsts.agent.fabrikam.our-osx-agent
TFS:本地 TFS AT 服务器的名称。 例如,如果连接到
http://our-server:8080/tfs
,则服务名称将是vsts.agent.our-server.our-osx-agent
例如,如果您将其安装在主目录的 myagent
子文件夹中:
cd ~/myagent$
命令:
./svc.sh install
此命令可创建指向 ./runsvc.sh
的 launchd
plist。 此脚本设置环境(下一部分的更多详细信息)并启动代理的主机。
命令:
./svc.sh start
输出:
starting vsts.agent.{tfs-name}.{agent-name}
status vsts.agent.{tfs-name}.{agent-name}:
/Users/{your-name}/Library/LaunchAgents/vsts.agent.{tfs-name}.{agent-name}.plist
Started:
13472 0 vsts.agent.{tfs-name}.{agent-name}
如果服务正在运行,则左侧数字为进程 ID。 如果第二个数字不为零,则发生问题。
命令:
./svc.sh status
输出:
status vsts.agent.{tfs-name}.{agent-name}:
/Users/{your-name}/Library/LaunchAgents/vsts.{tfs-name}.{agent-name}.testsvc.plist
Started:
13472 0 vsts.agent.{tfs-name}.{agent-name}
如果服务正在运行,则左侧数字为 pid。 如果第二个数字不为零,则发生问题。
命令:
./svc.sh stop
输出:
stopping vsts.agent.{tfs-name}.{agent-name}
status vsts.agent.{tfs-name}.{agent-name}:
/Users/{your-name}/Library/LaunchAgents/vsts.{tfs-name}.{agent-name}.testsvc.plist
Stopped
卸载前应停止。
命令:
./svc.sh uninstall
通常,代理服务仅在用户登录后运行。 如果希望代理服务在计算机重启时自动启动,可以将计算机配置为在启动时自动登录和锁定。 请参阅将 Mac 设置为在启动期间自动登录 - Apple 支持。
备注
有关详细信息,请参阅 Terminally Geeky:更安全地使用自动登录博客。 该博客中提到的 .plist 文件在源上可能不再可用,但可在此处找到副本:Lifehacker - 在登录之前,使 OS X 加载桌面。
配置服务时,它会为当前登录用户(例如 PATH、LANG、JAVA_HOME、ANT_HOME 和 MYSQL_PATH)拍摄一些有用的环境变量的快照。 如果需要更新变量(例如,安装一些新软件后):
./env.sh
./svc.sh stop
./svc.sh start
环境变量的快照存储在代理根目录下的 .env
文件中,还可以直接更改该文件以应用环境变量更改。
您还可以运行自己的指令和命令,以便在服务启动时运行。 例如,可以设置环境或调用脚本。
编辑
runsvc.sh
。将以下行替换为你的指令:
Bash# insert anything to setup env when running as a service
安装服务时,会设置一些服务文件。
创建 .plist 服务文件:
~/Library/LaunchAgents/vsts.agent.{tfs-name}.{agent-name}.plist
例如:
~/Library/LaunchAgents/vsts.agent.fabrikam.our-osx-agent.plist
./svc.sh install
从此模板生成此文件:./bin/vsts.agent.plist.template
./svc.sh start
通过读取 .service
文件来查找服务,该文件包含上面所述的 plist 服务文件的路径。
我们提供了 ./svc.sh
脚本,方便您以 launchd
LaunchAgent 服务的形式运行和管理您的代理。 但是,可以使用你喜欢的任何服务机制。
可以使用上述模板来帮助生成其他类型的服务文件。 例如,修改模板以生成作为启动守护程序运行的服务(如果你不需要 UI 测试,并且不想配置自动登录和锁定)。 请参阅 Apple 开发人员库:创建启动守护程序和代理。
若要替换代理,请按照 下载并再次配置代理 步骤。
使用与已存在的代理相同的名称配置代理时,系统会询问是否要替换现有代理。 如果回答 Y
,请确保删除要替换的代理(如下所示)。 否则,在几分钟的冲突之后,其中一个代理将关闭。
若要删除代理,请执行以下操作:
停止并卸载服务,如上一部分所述。
删除代理。
Bash./config.sh remove
输入凭据。
可以从脚本中设置代理,无需人工干预。
必须传递 --unattended
和所有问题的答案。
若要配置代理,它必须知道您组织或集合的 URL 以及授权设置代理的人员的凭据。
所有其他响应都是可选的。
可以使用环境变量指定任何命令行参数:将其名称改为大写,并在前面加上 VSTS_AGENT_INPUT_
。
例如,VSTS_AGENT_INPUT_PASSWORD
而不是指定 --password
。
--unattended
- 代理设置不会提示用户输入任何信息,所有设置必须在命令行中提供--url <url>
- 服务器的 URL。 例如:https://dev.azure.com/myorganization 或 http://my-azure-devops-server:8080/tfs--auth <type>
- 身份验证类型。 有效值为:pat
(个人访问令牌) - PAT 是唯一适用于 Azure DevOps Services 的方案。alt
(基本身份验证)
- 如果选择
--auth pat
:--token <token>
- 指定个人访问令牌- PAT 是唯一适用于 Azure DevOps Services 的方案。
- 如果选择
--auth negotiate
或--auth alt
:--userName <userName>
- 指定用户名--password <password>
- 指定密码
-
--pool <pool>
- 代理要加入的池名称 --agent <agent>
- 代理名称-
--replace
- 替换池中的代理。 如果另一个代理以同一名称侦听,它将开始由于冲突而失败
--work <workDirectory>
- 存储作业数据的工作目录。 默认为代理目录的根目录下的_work
。 工作目录由给定代理拥有,不应在多个代理之间共享。--acceptTeeEula
- 接受 Team Explorer Everywhere 最终用户许可协议(仅限 macOS 和 Linux)--disableloguploads
- 不要将控制台日志输出流式传输或发送到服务器。 相反,可以在作业完成后从代理主机的文件系统中检索它们。
--deploymentGroup
- 将代理配置为部署组代理-
--deploymentGroupName <name>
- 与--deploymentGroup
搭配使用,指定代理要加入的部署组 --projectName <name>
- 与--deploymentGroup
一起使用来设置项目名称--addDeploymentGroupTags
- 与--deploymentGroup
一起使用以指示应添加部署组标记--deploymentGroupTags <tags>
- 与--addDeploymentGroupTags
一起使用,用于指定部署组代理的逗号分隔标签列表,例如“web, db”
--addvirtualmachineresourcetags
- 用于指示应添加环境资源标记--virtualmachineresourcetags <tags>
- 与--addvirtualmachineresourcetags
一起用于指定环境资源代理的逗号分隔标签列表 - 例如“web, db”
./config.sh --help
始终列出最新的必需响应和可选响应。
如果你的自托管代理出现问题,可以尝试运行诊断。 配置代理后:
./run.sh --diagnostics
这将通过诊断套件运行,该套件可以帮助你解决问题。 诊断功能从代理版本 2.165.0 开始可用。
将 Agent.Diagnostic
的值设置为 true
以收集其他日志,这些日志可用于排查自托管代理的网络问题。 有关详细信息,请参阅自托管代理的网络诊断。
若要了解其他选项,请执行以下操作:
./config.sh --help
帮助内容提供了有关身份验证备选方案和无人参与的配置的信息。
代理的功能已编目并播发到池中,因此只会为代理分配它可以处理的生成和发布。 请参阅 生成和发布代理功能。
在许多情况下,在部署代理后,需要安装软件或实用程序。 通常,应在代理上安装你在开发计算机上使用的任何软件和工具。
例如,如果您的编译包括 npm 任务,那么除非池中有安装了 npm 的编译代理,否则编译将不会运行。
重要
功能包括所有环境变量以及代理运行时设置的值。 如果这些值中的任何一个在代理运行时发生更改,则必须重新启动代理以应用新值。 在代理上安装新软件后,必须重启代理才能使新功能显示在池中,以便生成可以运行。
如果您想将环境变量排除在功能之外,可以通过设置一个环境变量 VSO_AGENT_IGNORE
,并提供一个以逗号分隔的变量列表来指定要忽略的变量。
导航到“代理池”选项卡:
(
https://dev.azure.com/{yourorganization}
) 登录到组织。选择“Azure DevOps”、“组织设置”。
选择代理池。
登录到项目集合(
http://your-server/DefaultCollection
)。选择 Azure DevOps、集合设置。
选择代理池。
选择 Azure DevOps、集合设置。
选择代理池。
单击包含代理的池。
确保已启用代理。
导航到“功能”选项卡:
从 代理池 选项卡中,选择所需的代理池。
选择代理,然后选择所需的代理。
选择功能选项卡。
备注
Microsoft托管代理不显示系统功能。 有关安装在Microsoft托管代理上的软件列表,请参阅 使用Microsoft托管的代理。
从代理池选项卡中,选择所需的池。
选择代理,然后选择所需的代理。
选择功能选项卡。
从代理池选项卡中,选择所需的池。
选择代理,然后选择所需的代理。
选择功能选项卡。
查找
Agent.Version
功能。 可以针对最新发布的代理版本检查此值。 请参阅 Azure Pipelines 代理,并检查页面上列出的最高版本号。每个代理在运行需要较新版本代理的任务时自动更新自身。 如果要手动更新某些代理,请右键单击池,然后选择 更新所有代理。
是的。 从 Azure DevOps Server 2019 开始,可以将服务器配置为在本地磁盘上查找代理包文件。 此配置将替代服务器发布时附带的默认版本。 当服务器无权访问 Internet 时,此方案也适用。
从具有 Internet 访问权限的计算机上,从 Azure Pipelines 代理 GitHub 发布页下载最新版本的代理包文件(.zip 或 .tar.gz 格式)。
使用所选方法(例如 USB 驱动器、网络传输等)将下载的包文件传输到每个 Azure DevOps Server 应用程序层。 将代理文件放在以下文件夹下:
- Windows:
%ProgramData%\Microsoft\Azure DevOps\Agents
- Linux:
usr/share/Microsoft/Azure DevOps/Agents
- macOS:
usr/share/Microsoft/Azure DevOps/Agents
创建 代理 文件夹(如果不存在)。
- 你已完成所有设置! 每当更新代理时,Azure DevOps Server 现在都将使用本地文件。 每个代理在运行需要较新版本代理的任务时自动更新自身。 但是,如果要手动更新某些代理,请右键单击池,然后选择 更新所有代理。
导航到“代理池”选项卡:
(
https://dev.azure.com/{yourorganization}
) 登录到组织。选择“Azure DevOps”、“组织设置”。
选择代理池。
登录到项目集合(
http://your-server/DefaultCollection
)。选择 Azure DevOps、集合设置。
选择代理池。
选择 Azure DevOps、集合设置。
选择代理池。
单击包含代理的池。
确保已启用代理。
导航到“功能”选项卡:
从 代理池 选项卡中,选择所需的代理池。
选择代理,然后选择所需的代理。
选择功能选项卡。
备注
Microsoft托管代理不显示系统功能。 有关安装在Microsoft托管代理上的软件列表,请参阅 使用Microsoft托管的代理。
从 代理池 选项卡中,选择所需的代理池。
选择代理,然后选择所需的代理。
选择功能选项卡。
从代理池选项卡中,选择所需的池。
选择代理,然后选择所需的代理。
选择功能选项卡。
查找
Agent.Version
功能。 可以针对最新发布的代理版本检查此值。 请参阅 Azure Pipelines 代理,并检查页面上列出的最高版本号。每个代理在运行需要较新版本代理的任务时自动更新自身。 如果要手动更新某些代理,请右键单击池,然后选择 更新所有代理。
是的。 从 Azure DevOps Server 2019 开始,可以将服务器配置为在本地磁盘上查找代理包文件。 此配置将替代服务器发布时附带的默认版本。 当服务器无权访问 Internet 时,此方案也适用。
从具有 Internet 访问权限的计算机,访问 Azure Pipelines Agent GitHub Releases 页面,下载最新版本的代理包文件(以 .zip 或 .tar.gz 格式)。
使用所选方法(例如 USB 驱动器、网络传输等)将下载的包文件传输到每个 Azure DevOps Server 应用程序层。 将代理文件放在以下文件夹下:
- Windows:
%ProgramData%\Microsoft\Azure DevOps\Agents
- Linux:
usr/share/Microsoft/Azure DevOps/Agents
- macOS:
usr/share/Microsoft/Azure DevOps/Agents
创建 代理 文件夹(如果不存在)。
- 你已准备就绪! 每当更新代理时,Azure DevOps Server 现在都将使用本地文件。 每个代理在运行需要较新版本代理的任务时自动更新自身。 但是,如果要手动更新某些代理,请右键单击池,然后选择 更新所有代理。
如果在防火墙后面的安全网络中运行代理,请确保代理可以启动与以下 URL 和 IP 地址的通信。
域 URL | 描述 |
---|---|
https://{organization_name}.pkgs.visualstudio.com |
适用于使用 {organization_name}.visualstudio.com 域的组织的 Azure DevOps 打包 API |
https://{organization_name}.visualstudio.com |
适用于使用 {organization_name}.visualstudio.com 域的组织 |
https://{organization_name}.vsblob.visualstudio.com |
适用于使用 {organization_name}.visualstudio.com 域的组织的 Azure DevOps 遥测 |
https://{organization_name}.vsrm.visualstudio.com |
适用于使用 {organization_name}.visualstudio.com 域的组织的发布管理服务 |
https://{organization_name}.vssps.visualstudio.com |
Azure DevOps 平台服务适用于使用 {organization_name}.visualstudio.com 域的组织 |
https://{organization_name}.vstmr.visualstudio.com |
为使用 {organization_name}.visualstudio.com 域的组织提供的 Azure DevOps 测试管理服务 |
https://*.blob.core.windows.net |
Azure Artifacts |
https://*.dev.azure.com |
适用于使用 dev.azure.com 域的组织 |
https://*.vsassets.io |
通过 CDN 的 Azure Artifacts |
https://*.vsblob.visualstudio.com |
适用于使用 dev.azure.com 域的组织的 Azure DevOps 遥测 |
https://*.vssps.visualstudio.com |
适用于使用 dev.azure.com 域的组织的 Azure DevOps 平台服务 |
https://*.vstmr.visualstudio.com |
使用 dev.azure.com 域的组织可以借助 Azure DevOps 测试管理服务 |
https://app.vssps.visualstudio.com |
适用于使用 {organization_name}.visualstudio.com 域的组织 |
https://dev.azure.com |
适用于使用 dev.azure.com 域的组织 |
https://login.microsoftonline.com |
Microsoft Entra 登录日志 |
https://management.core.windows.net |
Azure 管理 API |
https://vstsagentpackage.azureedge.net |
代理包 |
为了确保您的组织与任何现有的防火墙或 IP 限制兼容,请确保 dev.azure.com
和 *dev.azure.com
已打开,并根据您的 IP 版本,更新允许列表中的 IP 以包括以下 IP 地址。 如果当前允许列出 13.107.6.183
和 13.107.9.183
IP 地址,请保留这些地址,因为无需删除它们。
IPv4 范围
13.107.6.0/24
13.107.9.0/24
13.107.42.0/24
13.107.43.0/24
IPv6 范围
2620:1ec:4::/48
2620:1ec:a92::/48
2620:1ec:21::/48
2620:1ec:22::/48
备注
有关允许的地址的详细信息,请参阅 允许的地址列表和网络连接。
如果以交互方式运行代理,请参阅 以交互方式运行中的重启说明。 如果以服务身份运行代理,请按照步骤 停止,然后 启动 代理。
如果希望代理绕过代理并直接连接到 Azure Pipelines,则应将 Web 代理配置为使代理能够访问以下 URL。
https://login.microsoftonline.com
https://app.vssps.visualstudio.com
https://{organization_name}.visualstudio.com
https://{organization_name}.vsrm.visualstudio.com
https://{organization_name}.vstmr.visualstudio.com
https://{organization_name}.pkgs.visualstudio.com
https://{organization_name}.vssps.visualstudio.com
https://dev.azure.com
https://*.dev.azure.com
https://login.microsoftonline.com
https://management.core.windows.net
https://vstsagentpackage.azureedge.net
https://vssps.dev.azure.com
要确保你的组织使用任何现有的防火墙或 IP 限制,请确认 dev.azure.com
和 *dev.azure.com
已打开,并更新允许列出的 IP,以包括以下 IP 地址,具体取决于你的 IP 版本。 如果当前允许列出 13.107.6.183
和 13.107.9.183
IP 地址,请保留这些地址,因为无需删除它们。
IPv4 范围
13.107.6.0/24
13.107.9.0/24
13.107.42.0/24
13.107.43.0/24
IPv6 范围
2620:1ec:4::/48
2620:1ec:a92::/48
2620:1ec:21::/48
2620:1ec:22::/48
备注
此过程使代理可以绕过 Web 代理。 对于在生成中运行的每个任务和工具,生成管道和脚本仍必须处理绕过 Web 代理的过程。
例如,如果使用 NuGet 任务,必须将 Web 代理配置为支持绕过托管正在使用的 NuGet 源的服务器的 URL。
其中一些功能仅适用于 Azure Pipelines,但尚未在本地使用。 如果您已 升级到 TFS的最新版本,则某些功能可以在内部部署环境中使用。
如果要使用 TFVC,则还需要 Oracle Java JDK 1.6 或更高版本。 (Oracle JRE 和 OpenJDK 不足以实现此目的。
TEE 插件 用于 TFVC 功能。 它有一个 EULA,如果你打算使用 TFVC,则必须在配置期间接受该 EULA。
由于 TEE 插件不再维护,并且包含一些过时的 Java 依赖项,从代理 2.198.0 开始,它不再包含在代理分发中。 但是,如果要签出 TFVC 存储库,则会在执行签出任务时下载 TEE 插件。 执行作业后,将删除 TEE 插件。
备注
注意:你可能会注意到,由于此下载机制,结帐任务需要很长时间才能开始工作。
如果代理程序在代理服务器或防火墙后面运行,您必须接受相关条件以确保能够访问以下站点:https://vstsagenttools.blob.core.windows.net/
。 可以从此地址下载 TEE 插件。
如果您使用自托管代理并遇到下载 TEE 的问题,可以手动安装 TEE:
- 将
DISABLE_TEE_PLUGIN_REMOVAL
环境或管道变量设置为true
。 此变量可防止代理在 TFVC 存储库签出后删除 TEE 插件。 - 从 Team Explorer Everywhere GitHub 版本手动下载 TEE-CLC 版本 14.135.0。
- 将
TEE-CLC-14.135.0
文件夹的内容提取到<agent_directory>/externals/tee
。
其他资源
培训
模块
在 Azure Pipelines 中托管自己的生成代理 - Training
使用 Space Game Web 团队提供的指导,设置在本地或在云中运行的 Azure 虚拟机上运行的生成代理。
文档
-
适用于 Azure Pipelines 的 Microsoft 托管代理 - Azure Pipelines
了解如何使用 Azure Pipelines 中提供的 Microsoft 托管代理
-
在 macOS (2.x) 上部署生成和发布代理 - Azure Pipelines
了解如何部署 MacOS 代理来为 Azure 管道和 Team Foundation Server (TFS) (2.x) 生成和部署 iOS 应用程序
-
Azure Pipelines 代理 - Azure Pipelines
了解如何使用 Azure Pipelines 中的代理生成代码或部署软件。