GOCD - 多个OS GOCD代理和管道

时间:2016-04-07 20:40:26

标签: go-cd

我正在尝试构建一个应用程序,其中一些应该在Windows操作系统上运行,一些应该在Linux中运行,如Centos / Ubuntu。在设计管道时,我如何确保所有与Windows相关的任务/作业都应该转到Windows代理程序,并且所有与Linux相关的作业都应该转到相应的Linux操作系统。

实现这一目标的理想方法是什么。

2 个答案:

答案 0 :(得分:4)

[只是添加更多信息]

您通常通过" AGENTS"启用/添加Go代理(安装在不同操作系统上) Go仪表板中的选项卡。您可以使用" RESOURCES"标记具有多个资源的Go代理。 " AGENTS"中的按钮标签。

当您在阶段(管道中)创建作业时,您可以在"资源"中提及要用于运行此作业的资源(Go代理)。 "工作设置"标签

根据提到的资源,Go服务器将使用这些Go代理来分配作业。您可以使用多个资源标记Go代理。

希望这有帮助。

答案 1 :(得分:0)

我有几个必须在特定机器上运行的管道。我用两种方法完成了这个。

首先是使用环境。我将特定的管道分配给特定的环境(例如,开发,质量保证,生产)。然后,我将一个能够执行与开发相关的任务/作业的代理分配给开发环境。我将可以执行QA相关任务/作业的代理分配给QA环境。

这可确保驻留在开发环境中的管道仅由也分配给开发环境的代理执行。

如果您的代理能够执行开发和QA任务,则将代理分配给开发和QA环境。

您可以使用相同的概念来确保只有Windows代理驻留在特定环境中。

例如,您可以拥有一个Developement-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查询)。然后我标记包含这些特定资源的代理。只有当代理满足所有这些资源需求时,才会为该任务分配。