有人可以解释一下不同之处之间构建和释放代理用最简单的术语来说?这与 Azure DevOps 有关。我从 Microsoft 找到有关构建代理的信息,但我没有找到任何专门针对发布代理的信息。我不是专业的开发人员,所以如果有人能澄清这一点,我将不胜感激。
答案1
从技术上讲,它们是相同的。即构建或发布使用的代理是在机器上运行的相同代码。但是有 3 种使用模式。
代理池是将代理分组的一种方式。例如,您可以通过以下方式将代理分组
- 操作系统(Linux、Windows、MacOS)
- 功能(.net 构建代理 vs Java 构建代理 vs IOS 构建代理 vs 安装 Web 浏览器进行自动测试的代理)
- 功能(构建、测试和部署)
- 网络访问(某些代理可以与网络上的某些资源对话)
- 或以上所有情况的混合。
您的代理越通用,其利用率就越高,但是您可能不希望有一个可以完成所有事情的大型代理池。
如果您的部署过程远程运行,即代理使用 ansible 或 ms deploy 等工具连接到远程服务器,那么您可以使用这些代理来发布您的代码,但是还有其他几种方法可以使用代理来发布软件。
在经典管道(GUI 创建的发布流程)中,您还可以创建部署组。在此模式下,您将代理安装在要部署到的计算机上,部署组充当将服务器集分组到环境中的一种方式,每个代理负责将代码部署到其正在运行的服务器上。您可以在部署组中标记代理,以便只有特定的作业才会在这些代理上运行。例如,您可能在环境中有 5 台服务器,2 台 Web 服务器,2 台应用程序服务器和 1 台数据库服务器,您可以将代理标记为“web”“app”“db”,然后在发布管道中标记您的作业,这样管道就知道在哪里运行每个作业。它还可以并行运行作业,以便两个 Web 服务器同时部署。
在多阶段管道(YAML 管道即代码)中,有一个环境的概念。这可以是一组资源。目前,环境支持 2 种类型的资源。
- Kubernetes 命名空间
- 虚拟机。
与部署组一样,环境允许您将代理专门部署到虚拟机,然后使用它使用标签运行特定作业。
在“部署组”或“环境”中使用代理有 3 个主要好处
- 代理位于其部署到的机器的本地,这意味着您的发布过程不必适应通过网络工作。
- 安全性方面,代理通过端口 443 与 Azure DevOps 通信,这意味着你可以对服务器的入站流量制定非常严格的规则,因为只有通过 443 的出站流量,代理才能正常工作
- 成本,代理池中的代理必须遵守以下规则并行作业。部署组和环境*不属于此限制
*环境和 YAML 管道目前处于预览阶段,定价模型在正式发布时可能会发生变化