Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Azure Devops连续运行两个构建_Git_Azure Devops_Azure Pipelines_Azure Git Deployment - Fatal编程技术网

Git Azure Devops连续运行两个构建

Git Azure Devops连续运行两个构建,git,azure-devops,azure-pipelines,azure-git-deployment,Git,Azure Devops,Azure Pipelines,Azure Git Deployment,我们有Azure Devops设置。现在我们的项目将建造两次 一次是在YAML文件中的拉入请求签入期间,另一次是由于生成设置(下图) 这会触发两个构建,并导致构建时间加倍。我们的Devops团队提到这是常规做法。为什么Azure Devops不触发一个构建,或者使用两个构建更安全 从功能上讲,这两个版本可能并不总是相同的 假设你有下面的例子。大写字母表示提交,小写字母表示潜在提交 e e' / \ | | D C | B \ | / A 这显示了来自提交的两个

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

一次是在YAML文件中的拉入请求签入期间,另一次是由于生成设置(下图)

这会触发两个构建,并导致构建时间加倍。我们的Devops团队提到这是常规做法。为什么Azure Devops不触发一个构建,或者使用两个构建更安全


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

假设你有下面的例子。大写字母表示提交,小写字母表示潜在提交

  e e'
 /   \
|  |   D
C  |   B 
 \ |  /
   A
这显示了来自提交的两个分支(主分支)。每个功能分支都为每个功能分支创建了一个PR。一个分支的构建基于e提交,另一个分支的构建基于e提交。Azure devops无法确定将首先合并哪个PR

一旦您合并了这两个PR,您将得到一个以前未构建的新的主提交。这是描述的

如果您想消除在主版本上构建的需要,可以在更新分支名称时立即将构建到期时间设置为

为什么Azure Devops不触发一个构建,或者使用两个构建更安全

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

由于生成设置

这是最新的

此触发器发生在拉取请求过程中,PR触发器意味着在创建PR时运行

此触发器相当于验证步骤,文件未真正提交到目标分支(预合并到目标分支)

您可以检查生成的结果以确定源分支代码是否有效

例如:

如果拉动请求触发器失败,您可以拒绝拉动请求。它不会影响目标分支,目标分支将保持原始状态

YAML文件中的拉入请求签入

这可能是最重要的

当pull请求完成时,将发生此触发器

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

工作流程摘要:

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

顺便说一句,如果要排除某些文件,以便它们不会触发请求触发器,则可以添加路径筛选器

例如:


好的,那么采用双重构建是正确的方法吗?thanks@alansmith4785对这是正确的方法。一个用于拉动请求检查,另一个用于目标分支检查。Hi@4785。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒一下。
   F
   E \
 / |   D
C  |   B 
 \ |  /
   A