Azure Devops依次运行两个版本

问题描述

我们有Azure Devops设置。现在,我们的项目将构建两次。

在YAML文件中的“拉取请求”检入过程中,一次是由于构建设置(下图)。

这会触发两次构建,并使我们的构建时间加倍。我们的Devops小组提到这是常规做法。为什么Azure Devops不会只触发一个版本,或者两个版本更安全呢?

enter image description here

解决方法

从功能上讲,两个版本可能并不总是相同的。

假设您有以下示例。大写字母是提交,小写字母是潜在的提交。

  e e'
 /   \
|  |   D
C  |   B 
 \ |  /
   A

这表明,有两个分支来自A提交(主分支)。每个功能分支都为每个功能分支创建了一个PR。一个分支基于e提交构建,另一个分支基于e'提交构建。 Azure开发人员无法确定哪个PR将首先被合并。

一旦合并两个PR,您将在master中以先前尚未构建的新提交来结束。描述here

   F
   E \
 / |   D
C  |   B 
 \ |  /
   A

如果要消除在master上进行构建的需要,可以将构建到期时间设置为Immediately when branch name is updated

,

Azure Devops为什么不只触发一个版本,还是两个版本更安全呢?

据我所知,这是Azure Devops的预期工作流程。

由于构建设置

这是Pull Request trigger

此触发器在请求请求过程中发生,PR触发器应在创建PR时运行。

此触发器等效于验证步骤,文件未真正提交到目标分支(已预合并到Targer分支)。

您可以检查构建结果以确定源分支代码是否有效。

例如:

如果“拉取请求”触发器失败,则可以拒绝拉取请求。它不影响目标分支,目标分支保持原始状态

在YAML文件中拉出请求签入

这可能是CI trigger

拉动请求完成后,将触发此触发器。

在这种情况下,目标分支已更改。目标分支的更改将触发CI触发器。这样可以再次检查代码是否有效。

工作流程摘要:

创建请求请求->请求请求触发器(预合并和最原始检查)->完成请求请求-> CI触发器(完成分支合并和第二次检查)。

顺便说一句,如果要排除某些文件以免它们触发“拉取请求触发器”,则可以添加路径过滤器。

例如:

enter image description here