cross-platform - 将 Windows 和 Linux 组合在一个构建中 : No agent could be found with the following capabilities: sh, DotNetFramework

标签 cross-platform azure-devops tfsbuild tfs-2015 agent

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

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

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

  • sh
  • DotNetFramework
  • Agent.Version > Version 1.94.0

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

代理版本

  • Linux 代理为 2.104.1
  • Windows 代理为 1.95.3

最佳答案

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

要解决这个问题,您必须:

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

关于cross-platform - 将 Windows 和 Linux 组合在一个构建中 : No agent could be found with the following capabilities: sh, DotNetFramework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802860/

相关文章:

python - 为什么在 Tkinter 中计算的字符串的宽度和高度(以像素为单位)因平台而异?

azure - 如何将管道构建代理连接到私有(private)工件注册表?

Azure DevOps OnPrem - 服务连接失败 - 无法获取 Json Web token

Azure Devops Pipeline - Angular 13 到 Azure 应用服务错误

azure-devops - 如何使用 TFVC 使用 Yaml 创建构建管道?

testing - 在 TFS 构建中运行 Protractor 端到端测试

tfs - Azure DevOps Build Rest API : How to get all Warning count in build Task, 超过 10 个限制

windows - Pcap 和 WinPcap 有多相似?

c# - 如何在 .NET 和 Java 之间创建跨平台进程间通信?

perl - 目前进行并行下载最舒适和可靠的跨平台 Perl 模块是什么?