Azure开发人员:共享来自运行自己作业的不同代理的输出

时间:2019-12-10 12:35:38

标签: azure-devops yaml azure-pipelines

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

如果Agent1运行Job1,Agent2运行Job2,并且Job3需要Job1和Job2的输出,由于文件位于不同的计算机上,因此我无法仅从一个代理访问文件。

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

我在MS Docs上寻找了workspace,但没有说明如何处理这种情况。

2 个答案:

答案 0 :(得分:1)

如果多级管线中的当前功能可以满足您的需求,那么多级管线中的管线伪像将是一个完美的选择。

https://docs.microsoft.com/en-us/azure/devops/pipelines/artifacts/pipeline-artifacts?view=azure-devops&tabs=yaml

如果没有,我能想到的最好的办法是通过向代理添加功能并向池分配添加需求(或通过创建自己的池)将作业定向到同一代理。使用部署组代理,添加标签是将作业定向到部署组中某个代理的便捷方法,但是在构建代理上找不到任何类似的东西。

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组合来完成所需的操作。看到这个:

enter image description here

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

并确保座席job3依赖于座席job1和job2,如下所示:

enter image description here

通过这种方式,可以将代理作业1和作业2的输出安装在代理作业3的计算机中,以备将来使用。希望对您有所帮助。