一个关于持续集成的基本问题

A basic question about continuous integration

这不是一个编程问题,但我不知道还有哪个论坛更活跃,而且程序员是能够回答我问题的最佳人选。

我正在尝试理解持续集成背后的基本原理。一方面,我知道在回家之前每天提交代码是一个很好的做法,无论编码和测试是否完成,然后有持续集成的概念,即在提交某些内容的那一刻,它会触发构建并且所有的测试用例都是运行。这两件事不是矛盾的吗?如果我们每天提交完成的任何编码,就会导致每天构建失败。为什么我们不在编码和测试完成后手动触发构建?

通常每天保存代码是为了确保您的工作不会丢失。

对口的CI或持续集成是为了测试你生产的东西是否可以,在大多数项目中CI是' t 应用于个别分支,即:featurebugfix,它应用于主要分支,即:masterdevelopreleases 等。这些分支不是' 每天更新,因为他们需要更新拉取请求并需要有人批准该拉取请求。

在各个分支(功能、错误修复)上实现 CI 的用例是在将拉取请求合并到主要分支之前检查测试以及代码是否构建。

所以恢复,是的,你需要每天提交你的代码,但你不需要每天应用 CI。

我建议你检查 Gitflow 工作流程:https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

答案显而易见。

1.提交代码: 一般来说,代码只有在本地环境测试后才会提交。 考虑 Developer_AComponent_A 上工作,因此必须提交最少的验证,因为范围是开发 Component_A。 无法想象拥有 50 位开发人员开发的复杂系统 Component_B...Component_Z++ 如果有人在没有进行最低限度测试的情况下提交代码,那么很可能会给你失败的结果。

否则开发人员可能会在开发分支上提交它,这完全取决于项目中采用的 SCM 策略。

2。继续集成测试范围: 另一方面,集成商主要将不同的代码(软件组件)收集并协同到一个容器中,并执行不同的测试。 最重要的是,集成商需要确保由不同开发商开发的所有组件都适合,并且最终软件按预期工作。为确保 Integrator 具有验收标准并主动防止可能出错的情况,重要的是在 Continues integration 的帮助下使这些标准自动化。

但在所有因素中,重要的是向开发人员提供有关软件质量的反馈。最好有利于项目(经济上),尽早了解错误,从而继续集成和 DevOps。 在 Complex System 中,值得拥有自动观察器来捕捉开发人员的偷偷摸摸的错误。

3 工具和自动化: 要创建独立于人类的系统,像 Jenkins 这样的自动化工具很有帮助。 基于测试策略,可以在自动化工具的帮助下执行不同的测试级别。