Azure devops Azure devops:共享运行各自作业的不同代理的输出

Azure devops Azure devops:共享运行各自作业的不同代理的输出,azure-devops,yaml,azure-pipelines,Azure Devops,Yaml,Azure Pipelines,我有一个包含多个作业的构建,它们依赖于彼此的输出。但我也有多个代理,这给了我以下问题: 如果Agent1运行Job1,Agent2运行Job2,而Job3需要来自Job1和Job2的输出,则我无法仅从一个代理访问文件,因为它们位于不同的计算机上 如何使我的工作能够下载其他代理的输出 我查找了MS文档上的,但它没有描述如何处理此场景。如果多阶段管道中的当前功能满足您的需求,则多阶段管道中的管道工件将与此完美匹配 如果没有,我能想到的最好办法就是通过向代理添加功能和向池分配添加需求(或创建自己的池

我有一个包含多个作业的构建,它们依赖于彼此的输出。但我也有多个代理,这给了我以下问题:

如果Agent1运行Job1,Agent2运行Job2,而Job3需要来自Job1和Job2的输出,则我无法仅从一个代理访问文件,因为它们位于不同的计算机上

如何使我的工作能够下载其他代理的输出


我查找了MS文档上的,但它没有描述如何处理此场景。

如果多阶段管道中的当前功能满足您的需求,则多阶段管道中的管道工件将与此完美匹配

如果没有,我能想到的最好办法就是通过向代理添加功能和向池分配添加需求(或创建自己的池),将作业定向到同一个代理。对于部署组代理,添加标记是将作业定向到部署组中某个代理的简便方法,但在构建代理上还没有找到类似的方法


在JukkaK的回答上添加更多细节

我在MS文档上查找了工作区,但它没有描述如何 处理这种情况

工作区
与代理相对应。不确定您使用哪种代理,但不同的代理具有不同的OS实例,因此一个代理中相同路径(工作区)下的内容应该与另一个代理中的内容完全不同

因此,工作空间不是满足您需要的方法

如何使我的工作能够下载其他代理的输出

您可以使用
发布工件+下载工件
组合来完成您需要的操作。见此:

您可以将
Publish build Artifacts
task作为代理job1和job2的最后一个任务。然后添加一个
Download buil Artifacts
,作为代理job3的第一个

确保代理job3依赖于代理job1和job2,如下所示:

这样,可以将代理job1和job2的输出安装在代理job3的机器中以供进一步使用。希望有帮助。

这里的答案仍然足够有效,并说明了构建定义/管道是如何映射到某些代理的工作目录的。因此,您的工作目录可能在一个代理中有10个,在另一个代理中有25个——但是如果您总是将构建指向同一个代理,我认为(但不完全确定)不同的作业使用相同的工作目录。不过,管道工件将是更好的解决方案。