我们可以并行构建多个门禁登机手续吗?

山姆

假设由于vNext系统不支持XAML构建定义而在TFS 2015中对门禁签入使用XAML构建定义,是否仍然可以并行运行多个门禁签入?

我知道在Build设置UI中有一个Parallel选项,但是我不知道它是否也可以应用于XAML生成定义,以及还有哪些其他约束。

您可以在同一盒上并行构建(只要它支持多个代理)?

詹姆斯·里德

具有相同定义的基于XAML的门控构建无法并行运行。我相信这是故意的限制。门控构建的目的是防止“损坏的”代码被提交到存储库。

当您对门控构建进行排队时,它会使用存储库中最新版本的代码,以及包含刚提交的更改的架子集。如果构建成功,则提交架子集并成为代码的最新版本。如果构建失败,则架子集不会提交给仓库。

如果第二个封闭式构建同时排队并同时运行,那么它将无法知道第一个构建是成功还是失败,因此无法知道要构建哪个版本(应该使用当前正在验证的最新版本还是货架集)。如果第一个构建失败,那么第二个构建就可以了。但是如果第一个构建成功,则第二个构建不会针对正确版本的代码进行编译。更糟糕的是,第二个架子集可能包含与第一个架子集不兼容的更改,如果第二个构建成功,您将有合并冲突或代码破裂的可能性。这违反了封闭式构建的目的。

门控签入即将构建vNext,但我希望它们具有相同的限制。

门控版本与“ CI”版本。

门控:如前所述,门控构建无法并行运行。当正确性比速度更重要时,应使用它们。

CI:TFS中的CI构建是更传统的触发构建。当开发人员签入更改时,会将其提交给存储库并触发构建。在这一点上,代码可能会被破坏(无法编译,导致单元测试失败等),CI构建可以并行运行,但会增加破坏的代码将其纳入存储库的风险,并且一个开发人员的失误可能会对代码产生影响。团队的其他成员。

想法:根据您的分支策略,您可以使用多种构建类型。例如,CI建立在变更流失率很高的dev分支上,但是如果构建每天中断几分钟,那就不是世界末日。仅开发团队会受到影响,他们可以快速解决任何问题。将Gated构建用于营业额较低的分支。例如,您的Main或Release分支只能在冲刺结束时进行更新。

意见: Gated构建原则上听起来是个好主意,它们可以防止损坏的代码污染您的源代码控制存储库。这是一件好事。但是对我来说,快速反馈更为重要。恕我直言,Gated构建更像是一种填充程序,可防止在提交之前不检查代码编译或通过测试的“不体贴”开发人员。当然,我们所有人都可能犯错误,但是两种构建都可以告诉我们,并为我们提供纠正错误的机会。

本质上,我想我是在说这个。

CI:我可以信任代码吗?

门控:我可以信任开发人员吗?

如果您有一个“永不破解代码”的政策,那么您将不得不忍受封闭式构建的局限性。如果您可以更加灵活一些,并且相信团队中的其他成员不会做任何愚蠢/无所事事的事情,那么您可以使用CI构建并从并行构建中受益。

更新:2020年9月建立了vNext,现在称为Azure DevOps Pipelines。门控Checkins的工作方式与基于XAML的内部版本相同,因此无法并行运行。这是针对TFVC用户的。Git用户可以通过在其分支策略(拉请求)上使用构建验证来使用类似的功能

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以从失败的地方开始构建Maven吗?

我们可以根据复合键属性构建Spring Data JPA规范吗

我们可以使用flyway在多个数据库上并行部署sql代码吗

我们可以以分布式方式构建word2vec模型吗?

CodeIgniter和GIT:不办理登机手续吗?

我们可以使用多线程并行运行async()吗?

我们可以在teamcity 10中创建自定义构建功能吗?

我们可以逐步构建io.restassured的RequestSpecification吗?

我们可以从python启动并行shell命令吗?

我们可以使用Kotlin构建全栈Web应用程序吗?

我们可以在代码中执行多个程序吗?

我们可以理解吗?

我们可以在Django中创建多个视图吗

我可以设置发送人支付手续费的Paypal按钮吗?

我们是否可以为不同的配置(发布或调试)选择特定的构建代理以进行并行构建

我们可以在Spring Batch中并行运行的多个步骤中使用单个flatFileItemReader bean吗?

在Gradle中,我们可以(以及如何)获取moduleA在moduleB中构建的工件的路径吗?

我们可以在文件中存储多个对象吗?

如何允许搁置但不能办理登机手续?

无法办理登机手续;\ packages \ EntityFramework.6.1.3 \ EntityFramework.6.1.3.nupkg:服务器返回的内容类型为文本/纯文本,不支持

拒绝门禁登机手续(旧vb.net网站)

我们可以对同一目标磁盘进行多张COPY / MOVE(并行)吗?

我们如何从贝宝获得交易手续费金额?

我们可以关闭MouseEvents吗?

我们可以自动标记预定的构建吗?

我们可以有多个扩展 CursorAdapter 的活动吗

我们可以同时过滤多个标签吗

我们可以根据道具的形状构建打字稿类型吗?

我们可以使用 conda 在调试模式下构建 python 环境吗?