Self-hosted macOS agents(自托管 macOS 代理)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

重要

本文提供有关将 3.x 代理软件与 Azure DevOps Services 配合使用的指导。 如果使用 Azure DevOps Server 或 TFS,请参阅自托管 macOS 代理(代理版本 2.x)

要生成和部署 Xcode 应用或 Xamarin.iOS 项目,至少需要一个 macOS 代理。 此代理还可以生成和部署 Java 与 Android 应用。

注意

本文介绍如何配置自托管代理。 如果使用 Azure DevOps Services 并且 Microsoft 托管的代理满足你的需求,则可以跳过设置自托管 macOS 代理。

了解代理

如果你已知道代理的定义及其工作原理,可随意跳转到下面的部分。 但是,如果你想要详细了解其作用和工作原理的更多背景信息,请参阅 Azure Pipelines 代理

检查先决条件

  • 支持的操作系统
    • X64
      • macOS 10.15“Catalina”
      • macOS 11.0“Big Sur”
      • macOS 12.0“Monterey”
      • macOS 13.0 "Ventura"
    • ARM64
      • macOS 11.0“Big Sur”
      • macOS 12.0“Monterey”
      • macOS 13.0 "Ventura"
      • 注意:并非所有 Azure Pipeline 任务都已更新为支持 ARM64
  • 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 管理员? 如果到这一步,说明你拥有权限。

否则:

  1. 打开浏览器并导航到 Azure Pipelines 组织、Azure DevOps Server 或 TFS 服务器的“代理池”选项卡:

    1. (https://dev.azure.com/{yourorganization}) 登录到组织。

    2. 选择“Azure DevOps”、“组织设置”。

      Choose Organization settings.

    3. 选择“代理池”。

      Choose Agent pools tab.

    1. 登录到项目集合 (http://your-server/DefaultCollection)。

    2. 选择“Azure DevOps”、“集合设置”。

      Choose Collection settings.

    3. 选择“代理池”。

      Choose Agent pools.

    1. 选择“Azure DevOps”、“集合设置”。

      Collection settings, 2019.

    2. 选择“代理池”。

      Choose Agent pools, 2019.

    1. 导航到项目,然后选择“设置”(齿轮图标)>“代理队列”。

      Choose Settings, Agent Queues, 2018.

    2. 选择“管理池”。

      Choose Manage pools, 2018.

  2. 选择页面右侧的池,然后单击“安全性”。

  3. 如果未显示要使用的用户帐户,请让管理员添加该帐户。 管理员可以是代理池管理员、Azure DevOps 组织所有者TFS 或 Azure DevOps Server 管理员

    如果是部署组代理,管理员可以是部署组管理员、Azure DevOps 组织所有者TFS 或 Azure DevOps Server 管理员

    可以在 Azure Pipelines 的“部署组”页上的“安全性”选项卡中将用户添加到部署组管理员角色。

注意

如果看到如下消息:“很抱歉,无法添加标识。请尝试其他标识。”表明你可能已针对组织所有者或者 TFS 或 Azure DevOps Server 管理员执行了上述步骤。 无需执行任何操作;你已拥有管理代理池的权限。

下载并配置代理

Azure Pipelines

  1. 使用已为其准备权限的帐户登录到计算机,如上节所述。

  2. 在 Web 浏览器中,登录到 Azure Pipelines,并导航到“代理池”选项卡:

    1. (https://dev.azure.com/{yourorganization}) 登录到组织。

    2. 选择“Azure DevOps”、“组织设置”。

      Choose Organization settings.

    3. 选择“代理池”。

      Choose Agent pools tab.

    1. 登录到项目集合 (http://your-server/DefaultCollection)。

    2. 选择“Azure DevOps”、“集合设置”。

      Choose Collection settings.

    3. 选择“代理池”。

      Choose Agent pools.

    1. 选择“Azure DevOps”、“集合设置”。

      Collection settings, 2019.

    2. 选择“代理池”。

      Choose Agent pools, 2019.

    1. 导航到项目,然后选择“设置”(齿轮图标)>“代理队列”。

      Choose Settings, Agent Queues, 2018.

    2. 选择“管理池”。

      Choose Manage pools, 2018.

  3. 选择“默认”池,选择“代理”选项卡,然后选择“新建代理”。

  4. 在“获取代理”对话框中,单击“macOS”。

  5. 单击“下载”按钮。

  6. 遵照页面上的说明操作。

  7. 清除 tar 文件上的扩展属性:xattr -c vsts-agent-osx-x64-V.v.v.tar.gz

  8. 将代理解压缩到所选的目录中。 通过 cd 转到该目录,运行 ./config.sh。 确保目录的路径不包含空格,因为工具和脚本并不总是会正确地转义空格。

服务器 URL

Azure Pipelines:https://dev.azure.com/{your-organization}

Azure DevOps Server:https://{your_server}/tfs

身份验证类型

注册代理时,请从以下身份验证类型中选择,代理安装程序会提示输入每种身份验证类型所需的特定补充信息。 有关详细信息,请参阅自托管代理身份验证选项

  • 个人访问令牌
  • 备用:使用基本身份验证连接到 Azure DevOps Server 或 TFS。 选择“备用”时,系统会提示输入凭据

以交互方式运行

有关是要以交互模式还是以服务形式运行代理的指导,请参阅代理:交互与服务

若要以交互方式运行代理,请执行以下步骤:

  1. 如果一直将代理作为服务来运行,请卸载服务

  2. 运行代理。

    ./run.sh
    

若要重启代理,请按 Ctrl+C,然后运行 run.sh 以重启代理。

若要使用代理,请使用代理池运行作业。 如果你没有选择其他池,代理将位于“默认”池中。

运行一次

对于配置为以交互方式运行的代理,可以选择让代理仅接受一个作业。 在此配置中运行:

./run.sh --once

此模式下的代理仅接受一个作业,然后正常关闭(在诸如 Azure 容器实例的服务上运行时很有用)。

作为启动的服务运行

我们提供 ./svc.sh 脚本,以便以启动的 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}

如果服务正在运行,则左侧数字为 pid。 如果第二个数字不为零,则表示出现问题。

状态

命令:

./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 文件中,你也可以直接更改该文件以应用环境变量更改。

在服务启动之前运行指令

你也可以运行自己的指令和命令,以在服务启动时运行。 例如,可以设置环境或调用脚本。

  1. 编辑 runsvc.sh

  2. 将以下行替换为你的指令:

    # insert anything to setup env when running as a service
    

服务文件

当你安装服务时,会放置一些服务文件。

.plist 服务文件

将创建 .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

.service 文件

./svc.sh start 通过读取 .service 文件来查找服务,该文件包含上面所述的 plist 服务文件的路径。

备用服务机制

我们提供 ./svc.sh 脚本,以便于用户以 launchd LaunchAgent 服务的形式运行和管理代理。 但也可以使用首选的任何类型的服务机制。

可以使用上面所述的模板来帮助生成其他类型的服务文件。 例如,如果不需要 UI 测试且不想配置自动登录和锁定,请修改模板以生成作为启动守护程序运行的服务。 请参阅 Apple 开发人员库:创建启动守护程序和代理

替换代理

若要替换代理,请再次按照“下载并配置代理”步骤操作。

如果使用与现有代理相同的名称来配置代理,系统会询问是否要替换现有代理。 如果回答是 Y,请确保移除要替换的代理(见下文)。 否则,在几分钟的冲突之后,其中一个代理将关闭。

移除并重新配置代理

若要删除该代理,请执行以下操作:

  1. 停止并卸载服务,如上一部分所述。

  2. 移除代理。

    ./config.sh remove
    
  3. 输入凭据。

移除代理后,可以再次配置代理

无人参与配置

可以从脚本设置代理,无需人工干预。 必须传递 --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 并提供以逗号分隔的要忽略的变量列表来指定这些变量。

常见问题解答

如何确保我使用的是最新的代理版本?

  1. 导航到“代理池”选项卡:

    1. (https://dev.azure.com/{yourorganization}) 登录到组织。

    2. 选择“Azure DevOps”、“组织设置”。

      Choose Organization settings.

    3. 选择“代理池”。

      Choose Agent pools tab.

    1. 登录到项目集合 (http://your-server/DefaultCollection)。

    2. 选择“Azure DevOps”、“集合设置”。

      Choose Collection settings.

    3. 选择“代理池”。

      Choose Agent pools.

    1. 选择“Azure DevOps”、“集合设置”。

      Collection settings, 2019.

    2. 选择“代理池”。

      Choose Agent pools, 2019.

    1. 导航到项目,然后选择“设置”(齿轮图标)>“代理队列”。

      Choose Settings, Agent Queues, 2018.

    2. 选择“管理池”。

      Choose Manage pools, 2018.

  2. 单击包含代理的池。

  3. 确保已启用代理。

  4. 导航到“功能”选项卡:

    1. 从“代理池”选项卡中,选择所需的代理池。

      From Agent pools, select the desired agent pool.

    2. 选择“代理”,然后选择所需的代理。

      Select Agents and choose the agent.

    3. 选择“功能”选项卡。

      Choose the Capabilities tab.

      注意

      Microsoft 托管的代理不显示系统功能。 有关 Microsoft 托管代理上安装的软件的列表,请参阅使用 Microsoft 托管代理

    1. 从“代理池”选项卡中,选择所需的池。

      Select the desired pool.

    2. 选择“代理”,然后选择所需的代理。

      Select Agents and choose the desired agent.

    3. 选择“功能”选项卡。

      Agent capabilities tab.

    1. 从“代理池”选项卡中,选择所需的池。

      Select the desired tab, 2019.

    2. 选择“代理”,然后选择所需的代理。

      Choose the desired agent, 2019.

    3. 选择“功能”选项卡。

      Choose the Capabilities tab, 2019.

    选择所需的代理,然后选择“功能”选项卡。

    Agent capabilities tab, 2018.

  5. 查找 Agent.Version 功能。 可以针对最新发布的代理版本检查此值。 请参阅 Azure Pipelines 代理,并检查页面上列出的最高版本号。

  6. 每个代理在运行需要较高版本的代理的任务时,都会自动自行更新。 如果要手动更新某些代理,请右键单击池,然后选择“更新所有代理”。

是否可以更新属于 Azure DevOps Server 池的代理?

是。 从 Azure DevOps Server 2019 开始,可以将服务器配置为在本地磁盘上查找代理包文件。 此配置将替代服务器在发布时附带的默认版本。 当服务器无权访问 Internet 时,此方案也适用。

  1. 在可以访问 Internet 的计算机上,从 Azure Pipelines 代理 GitHub 版本页下载代理包文件(.zip 或 .tar.gz 格式)的最新版本。

  2. 使用所选方法(如 U 盘、网络传输等)将下载的包文件传输到每个 Azure DevOps Server 应用层。 将代理文件放到以下文件夹下:

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux:usr/share/Microsoft/Azure DevOps/Agents
  • macOS:usr/share/Microsoft/Azure DevOps/Agents

创建 Agents 文件夹(如果不存在)

  1. 你已完成所有设置! 现在,只要更新代理,Azure DevOps Server 都将使用本地文件。 每个代理在运行需要较高版本的代理的任务时,都会自动自行更新。 但是,如果要手动更新某些代理,请右键单击池,然后选择“更新所有代理”。

如何确保我使用的是最新的代理版本?

  1. 导航到“代理池”选项卡:

    1. (https://dev.azure.com/{yourorganization}) 登录到组织。

    2. 选择“Azure DevOps”、“组织设置”。

      Choose Organization settings.

    3. 选择“代理池”。

      Choose Agent pools tab.

    1. 登录到项目集合 (http://your-server/DefaultCollection)。

    2. 选择“Azure DevOps”、“集合设置”。

      Choose Collection settings.

    3. 选择“代理池”。

      Choose Agent pools.

    1. 选择“Azure DevOps”、“集合设置”。

      Collection settings, 2019.

    2. 选择“代理池”。

      Choose Agent pools, 2019.

    1. 导航到项目,然后选择“设置”(齿轮图标)>“代理队列”。

      Choose Settings, Agent Queues, 2018.

    2. 选择“管理池”。

      Choose Manage pools, 2018.

  2. 单击包含代理的池。

  3. 确保已启用代理。

  4. 导航到“功能”选项卡:

    1. 从“代理池”选项卡中,选择所需的代理池。

      From Agent pools, select the desired agent pool.

    2. 选择“代理”,然后选择所需的代理。

      Select Agents and choose the agent.

    3. 选择“功能”选项卡。

      Choose the Capabilities tab.

      注意

      Microsoft 托管的代理不显示系统功能。 有关 Microsoft 托管代理上安装的软件的列表,请参阅使用 Microsoft 托管代理

    1. 从“代理池”选项卡中,选择所需的池。

      Select the desired pool.

    2. 选择“代理”,然后选择所需的代理。

      Select Agents and choose the desired agent.

    3. 选择“功能”选项卡。

      Agent capabilities tab.

    1. 从“代理池”选项卡中,选择所需的池。

      Select the desired tab, 2019.

    2. 选择“代理”,然后选择所需的代理。

      Choose the desired agent, 2019.

    3. 选择“功能”选项卡。

      Choose the Capabilities tab, 2019.

    选择所需的代理,然后选择“功能”选项卡。

    Agent capabilities tab, 2018.

  5. 查找 Agent.Version 功能。 可以针对最新发布的代理版本检查此值。 请参阅 Azure Pipelines 代理,并检查页面上列出的最高版本号。

  6. 每个代理在运行需要较高版本的代理的任务时,都会自动自行更新。 如果要手动更新某些代理,请右键单击池,然后选择“更新所有代理”。

是否可以更新属于 Azure DevOps Server 池的代理?

是。 从 Azure DevOps Server 2019 开始,可以将服务器配置为在本地磁盘上查找代理包文件。 此配置将替代服务器在发布时附带的默认版本。 当服务器无权访问 Internet 时,此方案也适用。

  1. 在可以访问 Internet 的计算机上,从 Azure Pipelines 代理 GitHub 版本页下载代理包文件(.zip 或 .tar.gz 格式)的最新版本。

  2. 使用所选方法(如 U 盘、网络传输等)将下载的包文件传输到每个 Azure DevOps Server 应用层。 将代理文件放到以下文件夹下:

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux:usr/share/Microsoft/Azure DevOps/Agents
  • macOS:usr/share/Microsoft/Azure DevOps/Agents

创建 Agents 文件夹(如果不存在)

  1. 你已完成所有设置! 现在,只要更新代理,Azure DevOps Server 都将使用本地文件。 每个代理在运行需要较高版本的代理的任务时,都会自动自行更新。 但是,如果要手动更新某些代理,请右键单击池,然后选择“更新所有代理”。

可以在哪里详细了解 launchd 服务的工作方式?

Apple 开发人员库:创建启动守护程序和代理

我正在运行防火墙,我的代码在 Azure Repos 中。 代理需要与哪些 URL 通信?

如果正在防火墙后面的安全网络中运行代理,请确保代理可以启动与以下 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 适用于使用 {organization_name}.visualstudio.com 域的组织的 Azure DevOps 平台服务
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.18313.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 代理后面运行代理

如何重启代理

如果是以交互方式运行代理,请参阅以交互方式运行中的重启说明。 如果是将代理作为服务来运行,请按照停止步骤操作,然后启动代理。

如何配置代理以绕过 Web 代理并连接到 Azure Pipelines?

如果希望代理绕过代理并直接连接到 Azure Pipelines,应配置 Web 代理,使代理能够访问以下 URL。

对于使用 *.visualstudio.com 域的组织:

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

对于使用 dev.azure.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.18313.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。

我正在使用 TFS,上述部分中的 URL 对我不起作用。 在哪里可以获得帮助?

网站设置和安全性

我在本地使用 TFS,但没有看到其中某些功能。 为什么看不到?

其中某些功能仅在 Azure Pipelines 上可用,在本地尚不可用。 如果你已升级到最新版本的 TFS,则可在本地使用这些功能。

TFVC 先决条件

如果要使用 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:

  1. DISABLE_TEE_PLUGIN_REMOVAL 环境或管道变量设置为 true。 此变量可防止代理在签出 TFVC 存储库后移除 TEE 插件。
  2. Team Explorer Everywhere GitHub 版本手动下载 TEE-CLC 版本 14.135.0。
  3. TEE-CLC-14.135.0 文件夹的内容提取到 <agent_directory>/externals/tee