在单个版本中组合Windows和Linux:找不到具有以下功能的代理:sh,DotNetFramework

时间:2016-08-06 09:46:11

标签: cross-platform azure-devops tfsbuild tfs2015 agent

我已经安装了TFS 2015 Update 3.并创建了一个名为“HYB Pool”的代理池。此代理池中包含2个代理。一个是Linux代理,另一个是Windows代理。它以这种方式创建的原因是因为“构建代码”步骤正在使用Windows代理和后构建步骤(使用docker来构建和推送图像)正在使用Linux代理。

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

  

在第6池中找不到满足指定要求的代理:

     
      
  • SH
  •   
  • DotNetFramework
  •   
  • Agent.Version>版本1.94.0
  •   

我该如何解决这个问题?看起来代理有能力但是当整个过程结合起来时(构建和停靠步骤)它会发出错误。

的代理商版本
  • linux agent是2.104.1
  • Windows代理是1.95.3

1 个答案:

答案 0 :(得分:2)

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

要解决此问题,您必须:

  • 从Windows代理到Linux机器的远程ssh执行其他步骤。您可以使用自定义批处理或PowerShell步骤来实现远程脚本部分。
  • 或在linux主机上执行.NET步骤(如果您能够使用Mono或.NET Core执行构建过程,则可能会有效)
  • 或执行编译&构建构建中的步骤,然后在TFS的发布管理部分中获取工件,其中每个阶段由单个代理执行。因此,您的第一个阶段可以从构建工件列表中获取构建结果,并执行构建Docker镜像并将其存储在某个位置或将其注册到docker存储库中的步骤。
  • 可能会将构建代理升级到Windows 10 Anniversary版本并启用Linux shell。这将解决需求问题,但可能无法帮助您真正在Linux上构建docker镜像。