在单个构建中组合 Windows 和 Linux:找不到具有以下功能的代理:sh、DotNetFramework
Combining Windows and Linux in a single build: No agent could be found with the following capabilities: sh, DotNetFramework
我已经安装了 TFS 2015 更新 3。并创建了一个名为“HYB 池”的代理池。此代理池中有 2 个代理。一个是 Linux 代理,另一个是 windows 代理。以这种方式创建它的原因是因为“构建代码”步骤使用 windows 代理和 post 构建步骤(使用 docker 构建和推送图像)使用 Linux 特工.
当我在 HYB 池中只执行构建步骤时,它工作正常。当我使用 HYB 池仅执行 post 构建步骤(需要 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
- windows代理是1.95.3
整个构建过程必须由单个代理执行。并且单个代理必须具备构建所需的所有功能。
要解决此问题,您必须:
- 从您的 windows 代理远程 ssh 到 linux 机器以执行其他步骤。您可以使用自定义批处理或 powershell 步骤来实现远程脚本部分。
- 或在 linux 主机上执行 .NET 步骤(如果您能够使用 Mono 或 .NET Core 执行构建过程,这可能会起作用
- 或者在构建中执行编译和构建步骤,然后在 TFS 的发布管理部分中获取工件,其中每个阶段都由单个代理执行。因此,您的第一阶段可以从构建工件列表中获取构建结果,并执行构建 Docker 图像并将它们存储在某个地方或将它们注册到您的 docker 存储库中的步骤。
- 可能将您的构建代理升级到 Windows 10 周年纪念版并启用 Linux shell。这将解决需求问题,但可能无法帮助您真正在 linux.
上构建 docker 图像
我已经安装了 TFS 2015 更新 3。并创建了一个名为“HYB 池”的代理池。此代理池中有 2 个代理。一个是 Linux 代理,另一个是 windows 代理。以这种方式创建它的原因是因为“构建代码”步骤使用 windows 代理和 post 构建步骤(使用 docker 构建和推送图像)使用 Linux 特工.
当我在 HYB 池中只执行构建步骤时,它工作正常。当我使用 HYB 池仅执行 post 构建步骤(需要 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
- windows代理是1.95.3
整个构建过程必须由单个代理执行。并且单个代理必须具备构建所需的所有功能。
要解决此问题,您必须:
- 从您的 windows 代理远程 ssh 到 linux 机器以执行其他步骤。您可以使用自定义批处理或 powershell 步骤来实现远程脚本部分。
- 或在 linux 主机上执行 .NET 步骤(如果您能够使用 Mono 或 .NET Core 执行构建过程,这可能会起作用
- 或者在构建中执行编译和构建步骤,然后在 TFS 的发布管理部分中获取工件,其中每个阶段都由单个代理执行。因此,您的第一阶段可以从构建工件列表中获取构建结果,并执行构建 Docker 图像并将它们存储在某个地方或将它们注册到您的 docker 存储库中的步骤。
- 可能将您的构建代理升级到 Windows 10 周年纪念版并启用 Linux shell。这将解决需求问题,但可能无法帮助您真正在 linux. 上构建 docker 图像