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

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

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

开始之前:

  • 如果管道位于Azure Pipelines并且Microsoft 托管的代理满足你的需求,则可以跳过设置自托管 macOS 代理。
  • 否则,可以在 macOS 上设置代理。 请继续阅读下一节。

了解代理

如果你已经知道什么是代理以及它的工作原理,请随时转到以下各节。 但如果你想要更多的背景有关它们的作用及其工作原理,请参阅Azure Pipelines 代理

检查先决条件

请确保您的计算机具有以下先决条件:

  • macOS Sierra (10.12) 或更高版本
  • 已强烈建议使用 Git 2.9.0 或更高版本 (最新版本-可以轻松地使用Homebrew安装)

代理版本2.125.0 和更高版本需要这些先决条件。

代理版本2.124.0 和更低版本需要这些先决条件。 如果可以,我们建议升级到较新的 macOS (10.12 +) 并升级到最新的代理。

请确保您的计算机具有以下先决条件:

  • OS X Yosemite (10.10) ,El Capitan (10.11) 或 macOS Sierra (10.12)
  • Git 2.9.0 或更高版本 (最新版本强烈建议)
  • 满足.Net Core 1.x 的所有先决条件

如果要使用 TFVC,还需要 Oracle JAVA JDK 1.6 或更高版本。 (Oracle JRE 和 OpenJDK 不足以实现此目的。 )

准备权限

如果是从 Subversion 存储库生成的,则必须在计算机上安装 Subversion 客户端。

你应首次手动运行代理安装程序。 了解代理的工作原理,或者如果想要自动设置多个代理,请考虑使用 无人参与的配置

自助托管代理的信息安全性

配置代理的用户需要池管理员权限,但运行代理的用户不需要。

代理控制的文件夹应限制为尽可能少的用户,并且包含可解密或 exfiltrated 的机密。

ADO 管道代理是一项软件产品,旨在执行从外部源下载的代码。 它本质上可能是远程代码执行 (RCE) 攻击的目标。

因此,请务必考虑 Pipelines 代理的每个单独使用的威胁模型来执行工作,并决定将哪些权限授予运行代理的用户、运行代理的计算机、运行代理的用户、对管道定义具有写入权限的用户、存储 yaml 的 git 存储库、 或为新管道控制对池的访问的用户组。

最佳做法是让运行代理的标识不同于具有将代理连接到池中的权限的标识。 生成凭据 (和其他代理相关文件) 的用户与需要读取它们的用户不同。 因此,更安全的做法是仔细考虑授予代理计算机本身的访问权限,以及包含敏感文件(如日志和项目)的代理文件夹。

只有为 DevOps 管理员和运行代理进程的用户标识授予对代理文件夹的访问权限。 管理员可能需要调查文件系统以了解生成失败或获取日志文件,以便能够报告 Azure DevOps 故障。

确定要使用的用户

如果是一次性步骤,则必须注册代理。 有权 管理代理队列的 用户必须完成以下步骤。 代理在日常操作中不会使用此人的凭据,但需要完成注册。 详细了解 代理的通信方式

(PAT) 的个人访问令牌进行身份验证

  1. 使用你计划在 Team Foundation Server web 门户 () 中使用的用户帐户登录 https://{your-server}:8080/tfs/
  1. 使用你计划在 Azure DevOps Server web 门户 () 中计划使用的用户帐户登录 https://{your-server}/DefaultCollection/
  1. 使用你计划用于 Azure DevOps 组织 () 的用户帐户登录 https://dev.azure.com/{your_organization}
  1. 在您的主页中,打开您的个人资料。 请参阅安全详细信息。

    请参阅安全详细信息。

  2. 创建个人访问令牌

    创建个人访问令牌。

  1. 从主页中打开用户设置,然后选择 " 个人访问令牌"。

    请参阅安全详细信息。

  2. 创建个人访问令牌

    创建个人访问令牌。

  1. 对于 "范围",请选择 " 代理池" (读取、管理) 并确保清除所有其他复选框。 如果该 部署组为 "部署组 ",则在 "选择 部署组" (读取、管理) 并确保清除所有其他复选框。

    选择 "创建新的个人访问令牌" 窗口底部的 "显示所有作用域",以查看作用域的完整列表。

  2. 复制令牌。 配置代理时,将使用此令牌。

作为 Windows 用户 (tfs 2015 和 tfs 2017 进行身份验证)

作为替代方法,在 tfs 2017 上,你可以在每个 tfs 应用程序层上使用域用户或本地 Windows 用户。

在 tfs 2015 上,仅适用于 macOS 和 Linux,我们建议你在每个 TFS 应用层上创建一个本地 Windows 用户,并将该用户专用于部署生成代理。

确认用户具有权限

请确保要使用的用户帐户具有注册代理的权限。

用户是 Azure DevOps 组织所有者还是 TFS 或 Azure DevOps Server 管理员? 在此处停止,你具有权限。

否则:

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

    1. 选择Azure DevOps组织设置

      选择

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      选择集合设置。

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      集合设置,2019。

    2. 选择 " 代理池"。

      选择

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

      选择设置,代理队列,2018。

    2. 选择 " 管理池"。

      选择

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

      选择设置,代理队列,2017。

    2. 选择 " 管理池"。

      选择

    1. 导航到你的项目,然后选择 " 管理项目 (齿轮" 图标) 。

      管理项目,2015。

    2. 选择 "控制面板"

      选择

    3. 选择 " 代理池"。

      选择

  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. 选择Azure DevOps组织设置

      选择

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      选择集合设置。

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      集合设置,2019。

    2. 选择 " 代理池"。

      选择

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

      选择设置,代理队列,2018。

    2. 选择 " 管理池"。

      选择

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

      选择设置,代理队列,2017。

    2. 选择 " 管理池"。

      选择

    1. 导航到你的项目,然后选择 " 管理项目 (齿轮" 图标) 。

      管理项目,2015。

    2. 选择 "控制面板"

      选择

    3. 选择 " 代理池"。

      选择

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

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

  5. 单击 " 下载 " 按钮。

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

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

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

Azure DevOps Server 2019 和 Azure DevOps Server 2020

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

  2. 在 web 浏览器中,登录到 Azure DevOps Server,然后导航到 "代理池" 选项卡:

    1. 选择Azure DevOps组织设置

      选择

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      选择集合设置。

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      集合设置,2019。

    2. 选择 " 代理池"。

      选择

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

      选择设置,代理队列,2018。

    2. 选择 " 管理池"。

      选择

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

      选择设置,代理队列,2017。

    2. 选择 " 管理池"。

      选择

    1. 导航到你的项目,然后选择 " 管理项目 (齿轮" 图标) 。

      管理项目,2015。

    2. 选择 "控制面板"

      选择

    3. 选择 " 代理池"。

      选择

  3. 单击“下载代理”。

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

  5. 单击 " 下载 " 按钮。

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

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

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

TFS 2017 和 TFS 2018

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

  2. 在 web 浏览器中,登录到 Azure Pipelines 或 TFS,然后导航到 "代理池" 选项卡:

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

      选择设置,代理队列,2017。

    2. 选择 " 管理池"。

      选择

  3. 单击“下载代理”。

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

  5. 单击 " 下载 " 按钮。

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

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

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

TFS 2015

  1. 在 上浏览到最新版本GitHub。

  2. 按照该页上的说明下载代理。

  3. 配置代理。

    ./config.sh
    

服务器 URL

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

TFS 2017 及更高版本: https://{your_server}/tfs

TFS 2015: http://{your_server}:8080/tfs

身份验证类型

Azure Pipelines

选择 PAT,然后将创建的 PAT 令牌粘贴到命令提示符窗口中。

注意

使用 PAT 作为身份验证方法时,PAT 令牌仅用于代理的初始配置。 有关详细信息,请通过 Azure Pipelines 或 TFS 通信

TFS 或 Azure DevOps Server

重要

确保服务器已 配置为支持想要 使用的身份验证方法。

将代理配置为连接到 TFS 时,有以下选项:

  • 使用连接身份验证将Azure DevOps Server TFS 或 TFS。 选择"备用"后,系统会提示输入凭据。

  • 综合 macOS 或 Linux 不支持。

  • 协商 () 连接通过 Windows 身份验证方案(如 NTLM 或 Kerberos)Azure DevOps Server TFS 或 Azure DevOps Server 用户身份登录到 TFS 或 TFS。 选择"协商"后,系统会提示输入凭据。

  • 帕特仅在 Azure Pipelines TFS 2017 及更高版本上受支持。 选择 PAT 后,将创建的 PAT 令牌粘贴到命令提示符窗口中。 如果客户端或 TFS (代理计算机不在) ,请使用 PAT Azure DevOps Server个人访问令牌。 PAT 身份验证由 Azure DevOps Server TFS 实例而不是域控制器处理。

注意

使用 PAT 作为身份验证方法时,PAT 令牌仅用于 Azure DevOps Server 和更高版本的 TFS 上的代理的初始配置。 有关详细信息,请通过 Azure Pipelines 或 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 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 一文:更安全地使用自动登录 博客。 该博客中提到的 .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

sudo ./svc.sh install 从此模板生成此文件: ./bin/vsts.agent.plist.template

. 服务文件

./svc.sh start 通过读取文件查找该服务 .service ,其中包含上述 info.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 (个人访问令牌)
    • negotiate (Kerberos 或 NTLM)
    • alt (基本身份验证)
    • integratedWindows 默认凭据 ()

身份验证选项

  • 如果选择 --auth pat
    • --token <token> -指定你的个人访问令牌
  • 如果选择了 --auth negotiate--auth alt
    • --userName <userName>-以格式或指定 Windows 用户名 domain\userNameuserName@domain.com
    • --password <password> -指定密码

池和代理名称

  • --pool <pool> -要加入的代理的池名称
  • --agent <agent> -代理名称
  • --replace -替换池中的代理。 如果其他代理正在侦听同一名称,它将开始失败并发生冲突

代理设置

  • --work <workDirectory> -存储作业数据的工作目录。 默认值为 _work 代理目录的根目录下的。 工作目录由给定代理拥有,不应在多个代理之间共享。
  • --acceptTeeEula-仅 (macOS 和 Linux 上接受 Team Explorer Everywhere 最终用户许可协议)
  • --disableloguploads -不将控制台日志输出流式传输或发送到服务器。 相反,你可以在作业完成后从代理主机的文件系统中检索它们。

仅限 Windows 启动

  • --runAsService-将代理配置为作为 Windows 服务运行 (需要管理员权限)
  • --runAsAutoLogon -配置自动登录并在启动时运行代理 (需要管理员权限)
  • --windowsLogonAccount <account>-与或一起使用 --runAsService--runAsAutoLogon ,用格式或指定 Windows 的用户名 domain\userNameuserName@domain.com
  • --windowsLogonPassword <password>-与或一起用于 --runAsService--runAsAutoLogon 指定 Windows 登录密码
  • --overwriteAutoLogon -用于 --runAsAutoLogon 覆盖计算机上的现有自动登录
  • --noRestart -用于 --runAsAutoLogon 在代理配置完成后停止主机重新启动

仅限部署组

  • --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 开始提供了诊断功能。

有关其他选项的帮助

了解其他选项:

./config.sh --help

帮助提供有关身份验证替代方法和无人参与配置的信息。

功能

代理的功能在池中已被编录和播发,以便只为其分配可以处理的版本和发布。 请参阅 生成和发布代理功能

在许多情况下,在部署代理后,需要安装软件或实用程序。 通常,应在代理上安装在开发计算机上使用的任何软件和工具。

例如,如果你的生成包含 npm 任务,则生成将不会运行,除非池中有一个已安装 npm 的生成代理。

重要

功能包括所有环境变量以及在代理运行时设置的值。 如果在代理运行时这些值中的任何值发生更改,则必须重新启动代理以选取新值。 在代理上安装新软件之后,必须重新启动该代理,以使新功能显示在池中,以便可以运行生成。

如果要将环境变量排除为功能,可以通过将环境变量设置 VSO_AGENT_IGNORE 为要忽略的以逗号分隔的变量列表来指定它们。

常见问题解答

如何实现确保我有最新的 v2 代理版本?

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

    1. 选择Azure DevOps组织设置

      选择

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      选择集合设置。

    2. 选择 " 代理池"。

      选择

    1. 选择Azure DevOps收集设置

      集合设置,2019。

    2. 选择 " 代理池"。

      选择

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

      选择设置,代理队列,2018。

    2. 选择 " 管理池"。

      选择

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

      选择设置,代理队列,2017。

    2. 选择 " 管理池"。

      选择

    1. 导航到你的项目,然后选择 " 管理项目 (齿轮" 图标) 。

      管理项目,2015。

    2. 选择 "控制面板"

      选择

    3. 选择 " 代理池"。

      选择

  2. 单击包含代理的池。

  3. 请确保已启用代理。

  4. 导航到 "功能" 选项卡:

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

      从

    2. 选择 " 代理 " 并选择所需的代理。

      选择

    3. 选择 " 功能 " 选项卡。

      选择

      注意

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

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

      选择所需的池。

    2. 选择 " 代理 " 并选择所需的代理。

      选择

    3. 选择 " 功能 " 选项卡。

      代理功能选项卡。

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

      选择所需的选项卡2019。

    2. 选择 " 代理 " 并选择所需的代理。

      选择所需的代理,2019。

    3. 选择 " 功能 " 选项卡。

      选择

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

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

    从 " 代理池 " 选项卡中,选择所需的代理,然后选择 " 功能 " 选项卡。

    选择

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

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

是否可以更新作为 Azure DevOps Server 池一部分的 v2 代理?

可以。 从 Azure DevOps Server 2019 开始,你可以将服务器配置为在本地磁盘上查找代理包文件。 此配置将覆盖在发布时服务器附带的默认版本。 此方案还适用于服务器无权访问 internet 的情况。

  1. 在具有 Internet 访问权限的计算机上,下载最新版本的代理包文件 (.zip 或 gz 窗体中) Azure Pipelines 代理 GitHub 版本 "页

  2. 使用所选的方法 (例如 USB 驱动器、网络传输等) ,将下载的包文件传输到每个 Azure DevOps Server 应用层。 将代理文件放在该 %ProgramData%\Microsoft\Azure DevOps\Agents 文件夹下。

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

在哪里可以了解有关 launchd 服务工作原理的详细信息?

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

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

如果在防火墙后面的安全网络中运行代理,请确保代理可以发起与以下 Url 和 IP 地址的通信。

域 URL 说明
https://{organization_name}.pkgs.visualstudio.com 使用域的组织 Azure DevOps 打包 API {organization_name}.visualstudio.com
https://{organization_name}.visualstudio.com 对于使用域的组织 {organization_name}.visualstudio.com
https://{organization_name}.vsblob.visualstudio.com 使用域的组织 Azure DevOps 遥测 {organization_name}.visualstudio.com
https://{organization_name}.vsrm.visualstudio.com 使用域的组织 Release Management 服务 {organization_name}.visualstudio.com
https://{organization_name}.vssps.visualstudio.com 使用域的组织 Azure DevOps 平台服务 {organization_name}.visualstudio.com
https://{organization_name}.vstmr.visualstudio.com Azure DevOps 使用域的组织的测试管理服务 {organization_name}.visualstudio.com
https://*.blob.core.windows.net Azure Artifacts
https://*.dev.azure.com 对于使用域的组织 dev.azure.com
https://*.vsassets.io 通过 CDN Azure Artifacts
https://*.vsblob.visualstudio.com 使用域的组织 Azure DevOps 遥测 dev.azure.com
https://*.vssps.visualstudio.com 使用域的组织 Azure DevOps 平台服务 dev.azure.com
https://*.vstmr.visualstudio.com Azure DevOps 使用域的组织的测试管理服务 dev.azure.com
https://app.vssps.visualstudio.com 对于使用域的组织 {organization_name}.visualstudio.com
https://dev.azure.com 对于使用域的组织 dev.azure.com
https://login.microsoftonline.com Azure Active Directory 登录
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,则可在本地使用这些功能。