我有几个必须在特定机器上运行的管道。我使用两种方法完成此操作。
首先是使用环境。我将特定的管道分配给特定的环境(例如开发、质量保证、生产)。然后,我将能够执行与开发相关的任务/作业的代理分配给开发环境。我将可以执行 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 查询)。然后我标记包含这些特定资源的代理。只有当代理满足所有这些资源要求时才会被分配任务。