我们使用带有多阶段模板的Yaml文件在Azure DevOps中运行我们的构建。我观察到的是,在每个阶段之后,管道工作空间都将被删除,而依赖于工作空间中存在的文件的下一个阶段将失败。
每个阶段后都要清理多阶段工作台
正如丹尼尔所说,是的,这是设计使然。
对于我们设计的用于天蓝色devops管道,workspace
存在一个workspace
。也就是说,每个代理作业都有单独的工作空间:
运行代理程序池作业时,它将在代理程序上创建一个工作区。工作区是一个目录,在其中下载源代码并运行步骤,并产生输出。
[如果您注意不同的代理程序作业使用的托管代理程序,则会在一个代理程序作业完成后发现,下一个将使用另一个新的代理程序。这是我上述话中最明显的体现。
如果您使用的是私有代理,这时,可以保留先前代理作业的工作区缓存(类似文件,二进制文件和ect),直到您清理它们为止。但是,您不能通过某些预定义变量来调用它们,例如agent job
。
在您的情况下,您说下一阶段与上一阶段具有文件依赖性。
为了避免此默认限制引起的问题,可以使用Build.SourcesDirectory
和Publish artifact
。这种方法可以帮助您在阶段之间传递文件。 download artifact
。