0

我正在使用 Azure devOps 构建和部署我的应用程序,在该应用程序中,我有一个项目正在被其他相关应用程序使用(我们称之为项目 N)。因此,我决定将此项目部署为 NuGet 包,并在构建期间使用它。

项目 N 可能会经常更改,因此我在定义可靠设置时遇到了一些麻烦:

  1. 仅当项目 N 及其依赖项发生更改时才创建 NuGet 包
  2. 保证,如果要创建 NuGet 包,按照 1),管道会在其他任何事情之前执行此操作

到目前为止,我设置的方式是有两个不同的管道,一个创建 NuGet 包并部署它(NuGet 管道),另一个使用该 NuGet 包,然后构建和部署应用程序(主管道)。

问题是,当与项目 N 相关的文件以及解决方案的一些剩余文件中发生更改时,我不知道如何制定一条规则,上面写着“在主管道之前运行 NuGet 管道”,所以对于我必须相信运气会发生这种情况,如果没有,我将不得不在两个构建完成后手动触发主管道。因为我想确保项目 N 中引入的新更改不会破坏解决方案。

有没有一种优雅的方式来做到这一点?我可以设置一个触发器,只要 Pipeline NuGet 完成,它就会触发主管道,但是通过这样做,每当对项目 N 和解决方案的其余部分进行更改时,我都会触发主管道两次。

4

1 回答 1

1

我不认为有任何方法可以做你想做的事。如果两个作业的顺序很重要,您应该将它们放在同一个管道中。在管道中,您可以创建作业之间的依赖关系。

请参阅https://docs.microsoft.com/en-us/azure/devops/pipelines/process/stages?view=azure-devops&tabs=yaml

但是,这意味着这两个作业都将始终运行。这可能不是问题,因为在 nuget 推送任务中,可以选择忽略重复版本(如果项目 N 没有更改,它仍然具有相同的版本):

在此处输入图像描述

总而言之:

  • 创建具有 2 个作业的单个管道
  • 使“主管道”作业依赖于“项目 N”作业
  • 在“项目 N”管道中,确保启用“允许跳过重复”选项
于 2020-04-10T14:03:55.457 回答