【发布时间】:2022-10-25 16:54:32
【问题描述】:
假设我有两个库A 和B,其中B 依赖于A。 A 和 B 都设置为使用各自的管道进行持续集成。 A 的更改将导致“A”管道运行并部署新版本,B 也是如此。
现在假设我编写了一个合并请求,其中包含对 A 的更改和B,其中B 中的更改取决于A 中的新更改。因此,A必须在B 之前构建,否则B 的构建将失败。
我的问题是,据我所知,我们使用的 CI 平台(Azure DevOps)没有任何指定构建顺序的机制。您可以让一个管道触发另一个管道(例如,运行A 可能会触发B 的运行),但这并不妨碍B 在A 和B 都发生更改时可能首先运行( Azure 文档:Combining trigger types),导致频繁浪费运行,注定会失败。
简单的答案可能是为这两个库设置一个管道,并在其中任何一个发生更改时构建它们。然而,这并不理想,而且问题更大,因为我们实际上有超过 2 个库。我们的应用程序有几十个,我们不想构建和部署几十个带有新版本号的库,每次只有其中一个发生变化。
所以我的问题是两个部分:
A) 从“正确”的 CI 实践的角度来看,我们的方法是否存在根本性的错误?我认为这将是一个足够常见的场景,Azure DevOps 可以处理它,所以它不会让我认为我们的方法存在根本性的错误,我们需要调整。
B) 如果这是一种有效的 CI 方法,为什么 Azure DevOps 不具备处理它的能力,或者在 Azure 中是否有一些我忽略的好方法来完成这个?
【问题讨论】:
标签: azure continuous-integration azure-pipelines cicd