我有一个包含多个作业的构建,它们依赖于彼此的输出。但是我也有多个代理,这给了我以下问题:
如果Agent1运行Job1,Agent2运行Job2,并且Job3需要Job1和Job2的输出,由于文件位于不同的计算机上,因此我无法仅从一个代理访问文件。
如何使我的工作能够下载其他代理的输出?
我在MS Docs上寻找了workspace,但没有说明如何处理这种情况。
答案 0 :(得分:1)
如果多级管线中的当前功能可以满足您的需求,那么多级管线中的管线伪像将是一个完美的选择。
如果没有,我能想到的最好的办法是通过向代理添加功能并向池分配添加需求(或通过创建自己的池)将作业定向到同一代理。使用部署组代理,添加标签是将作业定向到部署组中某个代理的便捷方法,但是在构建代理上找不到任何类似的东西。
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/demands?view=azure-devops&tabs=yaml
答案 1 :(得分:1)
要在 JukkaK的答案之上添加更多详细信息。
我在MS Docs上寻找了工作区,但没有说明如何 处理这种情况。
workspace
与代理相对应。不确定使用哪种代理,但是不同的代理具有不同的OS实例,因此一个代理中相同路径(工作区)下的内容应与另一代理中的内容完全不同。
因此工作空间不是您需要的方法。
如何使我的工作能够下载其他代理的输出?
您可以使用Publish Artifacts+Download Artifacts
组合来完成所需的操作。看到这个:
您可以将Publish build Artifacts
任务放置为业务代表job1和job2的最后一个任务。然后添加一个Download buil Artifacts
作为代理job3的第一个。
并确保座席job3依赖于座席job1和job2,如下所示:
通过这种方式,可以将代理作业1和作业2的输出安装在代理作业3的计算机中,以备将来使用。希望对您有所帮助。