2016-08-06 22 views
2

我已经安装了TFS 2015 Update 3.并创建了一个名为“HYB池”的代理池。该代理池中有2个代理。一个是Linux代理,另一个是Windows代理。之所以这样创建,是因为“构建代码”的步骤是使用windows代理和后期构建步骤(使用docker构建和推送图像)正在使用Linux代理。将Windows和Linux组合在一个版本中:没有代理可以通过以下功能找到:sh,DotNetFramework

当我只在HYB池执行构建步骤时,它工作正常。当我只用HYB Pool执行后构建步骤(这需要linux代理)时,它运行良好。但是,当我将所有步骤结合在一起并在HYB池中执行它时,它会抛出以下错误:

No agent found in pool 6 which satisfies the specified demands:

  • sh
  • DotNetFramework
  • Agent.Version > Version 1.94.0

如何解决此问题?看起来代理商有能力,但是当整个流程结合起来时(构建和docker步骤),它会发布错误。

  • Linux代理代理的版本是2.104.1
  • 窗口剂是1.95.3
+0

代理具有sh和DotNetFramework的功能。我可以看到以下功能: sh =/bin/sh和DotNetFramework = C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 – Raji

回答

2

整个构建过程必须由单一代理执行。单个代理必须具备构建所需的所有功能。

为了解决这个问题,你必须:

  • 从Windows代理远程ssh到一台Linux机器来执行其他步骤。您可以使用自定义批处理或PowerShell步骤来实现远程脚本部分。
  • 或在Linux主机上执行.NET步骤(如果您能够使用Mono或.NET Core执行构建过程
  • 或执行编译&构建中的构建步骤,在TFS的发布管理部分提供工件,其中每个阶段都由单个代理执行,因此,您的第一阶段可以从构建工件的列表中获取构建结果,并执行构建Docker镜像和存储的步骤或者在你的docker repository中注册它们
  • 可能将你的构建代理升级到Windows 10周年纪念版,并启用Linux shell,这将解决需求问题,但可能无法帮助你真正在Linux上构建Docker镜像。
+0

非常感谢Jessehouwing。第三选项听起来更好。我对它的执行有疑问。在TFS 2015更新2或3中,有“构建”,“测试”和“发布”选项。在构建部分,我可以使代码在Windows机器中生成并创建工件。之后,我将如何做码头步骤? TFS的Releae管理部分究竟意味着什么?它是“释放”选项吗?但是我发现每个发布定义都与构建链接相关,并且只需要该构建者拥有的代理。 – Raji

+0

我的确的意思是释放选项卡。您的Windows代理将构建代码并发布代码工件。您的发布阶段从构建中获取工件,并可将其配置为使用其他代理来执行发布阶段。它使用相同的池和需求机制来选择代理。 – jessehouwing

+0

谢谢Jessehouwing。第三个选项正常工作 – Raji

相关问题