我以前从未使用过持续集成系统(CI)。我主要使用MATLAB,Python或PHP进行编码。这些都没有构建步骤,我看不到如何将CI用于我的工作。一家大型公司的大型项目中的一位朋友告诉我,语言并不重要。
如果没有构建步骤,我看不到CI对我有什么用。我可以将CI视为可以运行单元测试的测试环境。我想念什么吗?
我以前从未使用过持续集成系统(CI)。我主要使用MATLAB,Python或PHP进行编码。这些都没有构建步骤,我看不到如何将CI用于我的工作。一家大型公司的大型项目中的一位朋友告诉我,语言并不重要。
如果没有构建步骤,我看不到CI对我有什么用。我可以将CI视为可以运行单元测试的测试环境。我想念什么吗?
Answers:
持续集成这个术语是指两个不同的想法。
首先是工作流:不是团队中的每个人都在自己的分支上工作,而是经过几周的编程尝试将其更改合并到主线中,然后才(几乎)连续地集成更改。这样可以使问题尽早出现,并避免不兼容的更改。但是,这要求我们可以轻松地检查更改是否“有效”。
这是第二个想法出现的地方,事实证明它更受欢迎。CI服务器是一个干净的环境,在该环境中尽快对更改进行了测试。干净的环境是必需的,以便可复制该构建。如果它可以一次工作,那么它应该总是可以工作。这样可以避免“但它对我的机器有效”的问题。当您的软件在不同的系统或不同的配置上运行并且您需要确保一切正常时,CI服务器尤其有用。
缺少构建步骤是无关紧要的。但是,只有在拥有测试套件的情况下,CI才有意义。该测试套件必须是自动的,并且必须没有故障。如果测试失败,则适当的开发人员应收到通知,以便他们可以解决所引入的问题(即使没有编译版本,也“破坏了构建”)。
事实证明,这样的服务器不仅对测试有用,还具有更多的价值。实际上,大多数CI软件都无法在各种配置下运行测试,但是擅长管理各种作业。例如,除了“连续”单元测试外,每晚还可能需要进行完整的测试。该软件可以使用多个Python版本和不同的库版本进行测试。可以对网站进行无效链接测试。我们可以在代码上运行静态分析,样式检查器,测试覆盖率工具等。可以生成文档。当所有测试套件通过时,可以启动打包过程,以便您准备发布软件。这在您始终需要可部署(可演示)产品的敏捷设置中很有用。随着Web应用程序的兴起,还有不断部署的想法:如果所有测试都通过,我们可以自动将更改推入生产阶段。当然,这要求您对测试套件非常有信心(如果没有,则存在更大的问题)。
的确,您并不需要CI系统来执行构建并检查那些构建是否正确,但这只是CI的一部分。
CI的目的是尽快发现错误,因为通常来说,越早发现错误,修复它的成本就越低。为此,在不需要构建步骤的情况下,CI系统仍可以自动使用代码分析工具,部署到测试环境,可以自动化的单元/集成/回归/其他测试以及任何其他步骤您可以自动执行以检查错误。
持续集成不仅仅执行代码的编译。如果仅此而已,那么我们将不需要那么多的工具!
我可以想到的一些其他任务是持续集成管道经常执行的:
从严格意义上讲,在“持续集成”的边界上走得更远,您还可以执行以下操作:
重点很简单:除了编写代码外,在开发软件的过程中还必须定期执行一些任务。通过自动化这些任务并使它们在服务器上运行,您将获得
可能还没有想到其他一些好处。