我有一个用YAML实现的Azure DevOps构建管道,该管道包含单元测试。如果单元测试失败,构建也会失败--到目前为止一切顺利。
由于管道与代码位于相同的代码库中,开发人员可以根据自己的意愿对其进行修改。
有时开发人员懒惰或匆忙,他们更喜欢摆脱失败的单元测试,而不是修复它们。如何确保开发人员不会从YAML管道中移除单元测试构建任务?
在TeamCity中,我会添加一个构建失败条件,它会将当前构建中的单元测试数量与上一个构建中的单元测试数量进行比较,如果它(显著)下降,则构建将失败。在Azure DevOps中有类似的选项吗?
发布于 2018-12-10 18:47:21
在调查了这个问题之后,发现目前在Azure DevOps中还没有简单的技术解决方案。
可以,对于Release Pipeline,您可以使用盖茨,但它们不能用于Build Pipeline。是的,Timeline REST API可以用于查询特定构建是否包含特定任务,但问题仍然存在:何时调用REST API来中断构建管道?
一种解决方案是触发两个单独的生成管道:一个包含编译步骤,并在YAML中实现,以便开发人员可以对其进行更改;另一个包含测试步骤,在可视设计器中实现,因此开发人员无法修改它。
感谢@丹丹和@Rob Bos的帮助,但老实说,我觉得所有这些解决方案都太复杂了。我越是思考最初的问题,我就越觉得这个问题不应该通过技术来解决。这是一个文化问题:如果团队中的开发人员不相信测试的重要性,他们迟早会找到绕过它们的方法。另一方面,如果他们看到测试的好处,他们不会忽略它们,即使这只需要取消选中单个复选框。
如果团队没有达到我们可以信任的成熟度级别,那么我们应该避免使用YAML,并坚持使用可视化设计器。
https://stackoverflow.com/questions/53553871
复制相似问题