git - Azure DevOps 构建验证 - 使用现有 CI 运行
问题描述
我在 Azure DevOps 中设置了一个带有功能/主工作流的小项目,其中主工作流以两种方式受到保护:
- 合并仅通过拉取请求发生
- 拉取请求必须具有绿色 CI 构建:
不幸的是,这与 CI 相矛盾:我的 CI 构建被定义为在远程每次提交时运行(据我所知,这是获得快速反馈的最佳实践)。问题是,Azure DevOps 无法识别“提交触发器”CI 构建,要么启动另一个,要么开发人员需要手动启动 CI 以完成构建策略。
根据我对 Bamboo 等工具的记忆,这应该是一个工作流程:策略在最后一次运行时不需要特定的源,例如 PR 触发器的 Commit 触发器。Microsoft 是否故意改变了这里的概念,或者是否有一种解决方法可以在不需要两次运行的情况下同时设置触发器(PR 和提交)?
解决方案
当您在 PR 中定义构建策略时,该构建必须在您创建 PR 时运行,无论此构建是否由 CI 触发。
原因很简单,CI构建运行在分支源代码(例如feature
分支)上,这在PR中是不够的,因为即使CI构建通过了,他在feature
分支上传递,你不知道它是否会通过在master
分支。
因此,当创建 PR 时,ADO 会随着master
分支的更改触发在分支上运行的新构建feature
,并且当此构建通过时,您可以确定合并不会破坏master
代码。
ADO 如何检查合并前master
的feature
更改?在幕后,构建在本地进行合并,并在此合并上运行构建。
推荐阅读
- prometheus - probe_success 和 up 的区别?
- reactjs - 垂直 FlatList 内水平 FlatList 的动态高度
- python - Python检查变量是否高于上次循环
- three.js - 加载纹理中的工件 - 三个 js
- android - Android+mysql:连接类返回一个Null对象
- react-grid-layout - 如何在 React-Grid-Layout 中实现静态大小的网格,如 3x3
- docker - Docker卷启动后一直退出
- raspberry-pi - Raspberry Pi 3 在尝试更新 64GB 卡时返回输入/输出错误并导致系统崩溃
- string - print(f"...:")-statement too long - 把它分成多行而不弄乱格式
- svg - *响应式*带有油漆填充的 SVG 图形