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”
  • 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”、“组织设置”。

      选择组织设置。

    3. 选择代理池

      “选择代理池”选项卡。

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

    2. 选择 Azure DevOps集合设置

      选择集合设置。

    3. 选择代理池

      选择代理池。

    1. 选择 Azure DevOps集合设置

      集合设置,2019。

    2. 选择代理池

      选择“代理池,2019”。

  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”、“组织设置”。

      选择组织设置。

    3. 选择代理池

      打开“代理池”选项卡。

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

    2. 选择 Azure DevOps集合设置

      选择集合设置。

    3. 选择代理池

      选择代理池。

    1. 选择 Azure DevOps集合设置

      集合设置,2019。

    2. 选择代理池

      选择“代理池,2019”。

  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 脚本,以便以 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.shlaunchd 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 文件中,还可以直接更改该文件以应用环境变量更改。

在服务启动之前运行指令

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

  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”、“组织设置”。

      选择组织设置。

    3. 选择代理池

      “选择代理池”选项卡。

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

    2. 选择 Azure DevOps集合设置

      选择集合设置。

    3. 选择代理池

      选择代理池。

    1. 选择 Azure DevOps集合设置

      集合设置,2019。

    2. 选择代理池

      选择“代理池,2019”。

  2. 单击包含代理的池。

  3. 确保已启用代理。

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

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

      从代理池中,选择所需的代理池。

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

      选择”代理”并选择代理。

    3. 选择功能选项卡。

      选择“功能”选项卡。

      注意

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

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

      选择所需的池。

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

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

    3. 选择功能选项卡。

      “代理功能”选项卡。

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

      选择所需的选项卡,2019年。

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

      选择所需代理,2019。

    3. 选择功能选项卡。

      选择“功能”选项卡,2019。

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

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

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

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

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

  2. 使用所选方法(例如 USB 驱动器、网络传输等)将下载的包文件传输到每个 Azure DevOps Server 应用程序层。 将代理文件放在以下文件夹下:

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

创建 代理 文件夹(如果不存在)。

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

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

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

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

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

      选择组织设置。

    3. 选择代理池

      选择“代理池”选项卡。

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

    2. 选择 Azure DevOps集合设置

      选择集合设置。

    3. 选择代理池

      选择代理池。

    1. 选择 Azure DevOps集合设置

      集合设置,2019。

    2. 选择代理池

      选择“代理池,2019”。

  2. 单击包含代理的池。

  3. 确保已启用代理。

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

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

      从代理池中,选择所需的代理池。

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

      选择”代理”并选择代理。

    3. 选择功能选项卡。

      选择“功能”选项卡。

      注意

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

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

      选择所需的池。

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

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

    3. 选择功能选项卡。

      “代理功能”选项卡。

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

      选择“所需项”选项卡,2019。

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

      选择所需代理,2019。

    3. 选择功能选项卡。

      选择「功能」选项卡,2019 年。

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

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

我可以更新属于 Azure DevOps Server 池的代理吗?

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

  1. 从具有 Internet 访问权限的计算机,访问 Azure Pipelines Agent GitHub Releases 页面,下载最新版本的代理包文件(以 .zip 或 .tar.gz 格式)。

  2. 使用所选方法(例如 USB 驱动器、网络传输等)将下载的包文件传输到每个 Azure DevOps Server 应用程序层。 将代理文件放在以下文件夹下:

  • Windows: %ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux:usr/share/Microsoft/Azure DevOps/Agents
  • macOS:usr/share/Microsoft/Azure DevOps/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 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.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