我正在尝试构建一个应用程序,其中一些应该在 Windows 操作系统上执行,而另一些应该在 Linux 上执行,比如 Centos/Ubuntu。在设计管道时,如何确保所有与 windows 相关的任务/作业都应该转到 windows 代理,所有与 linux 相关的作业都应该转到适当的 linux 操作系统。
实现这一目标的理想方法是什么。
我正在尝试构建一个应用程序,其中一些应该在 Windows 操作系统上执行,而另一些应该在 Linux 上执行,比如 Centos/Ubuntu。在设计管道时,如何确保所有与 windows 相关的任务/作业都应该转到 windows 代理,所有与 linux 相关的作业都应该转到适当的 linux 操作系统。
实现这一目标的理想方法是什么。
[只是为了添加更多信息]
您通常通过 Go 仪表板中的“代理”选项卡启用/添加 Go 代理(安装在不同的操作系统上)。您可以使用“代理”选项卡中的“资源”按钮标记具有多个资源的 Go 代理。
当您在阶段(在管道中)创建作业时,您可以在“作业设置”选项卡的“资源”字段中提及用于运行此作业的资源(哪个 Go 代理)。
根据提到的资源,Go 服务器将使用这些 Go 代理来分配作业。您可以使用多个资源标记 Go 代理。
希望这可以帮助。
我有几个必须在特定机器上运行的管道。我使用两种方法完成此操作。
首先是使用环境。我将特定的管道分配给特定的环境(例如开发、质量保证、生产)。然后,我将能够执行与开发相关的任务/作业的代理分配给开发环境。我将可以执行 QA 相关任务/作业的代理分配给 QA 环境。
这确保了位于开发环境中的管道仅由也分配给开发环境的代理执行。
如果您的代理能够执行开发和 QA 任务,则将代理分配给开发和 QA 环境。
您可以使用相同的概念来确保只有 Windows 代理驻留在特定环境中。
例如,您可以拥有一个 Development-Win 环境,您可以分配管道和代理来处理 Windows 构建。另一个称为 Development-Linux,您分配应该处理 linux 构建的代理和管道。
由于我有可以为多种环境(Dev、QA 和 Prop)构建的代理,因此我还使用在“作业设置”选项卡下分配的“资源”。如果作业需要在windows主机上执行,那么我将分配一个资源“win2012”。这告诉我代理必须具有“Windows 2012”的资源才能执行此特定任务。
我为代理分配了“win2012”的资源,以表明它是 Windows 2012 资源。
通过环境配置和资源设置的组合,作业将仅由同时满足资源要求并在适当环境中的代理执行。
如果您对任务有多个资源需求,您可以使用逗号分隔的列表来分配每个资源需求。我使用的一些资源是 msbuild、subversion、sqlcmd。这告诉我代理必须有权访问 msbuild(编译代码)、subversion(从 SVN 获取它)和 sqlcmd(对 SQL Server 执行 sql 查询)。然后我标记包含这些特定资源的代理。只有当代理满足所有这些资源要求时,才会分配任务。