随着 AI 的迅猛发展,ChatGPT 生成一次性代码片段或在其帮助下大量生成样板代码逐渐变成在软件开发中开始使用 AI 的一种普遍方法。不过如果企业想系统、大规模地采用 AI 辅助编码,则需要将基于 AI 的编码实践构建到 CI/CD 流水线中。
那么具体该如何做到这点呢?在本文中,我们通过讨论开发人员应如何更新其 CI/CD 流水线和策略以利用 AI 辅助编码工具来探讨这一问题。
AI 辅助编程如何影响 CI/CD
首先,我们必须要弄清楚如果团队想利用 AI 进行软件开发,为什么 CI/CD 策略必须随之发展?
其原因很简单——因为作为开发人员在构建软件时遵循的一组流程,CI/CD 流水线在保持开发操作的一致性和可重复性方面发挥着基础作用。如果想让 AI 以系统且可重复的方式成为开发过程的一部分,就需要将 AI 辅助编码纳入 CI/CD 策略中。
换句话说,在 AI 工具的帮助下编写、测试或以其他方式管理代码的开发人员需要确保他们的 CI/CD 流水线针对 AI 作为软件开发解决方案的使用进行了优化。这一点很重要,因为大多数现有的 CI/CD 流水线和工具都是在 AI 辅助编码广泛普及之前设计的,因此需要进行一些修改以适应基于 AI 的软件开发的独特挑战。
CI 向 AI 转型的挑战
然而,从传统 CI 流程到 AI 设计的 CI 的转变带来了几个挑战:
结合 AI 工具带来的好处
过渡到 AI 设计的 CI 工具链可以为组织带来几个显著的好处:
AI 优化 CI/CD 流水线的最佳实践
当然,每个软件项目和 CI/CD 流水线都是独一无二的,并且没有一种通用的方法能优化 AI 辅助编码的 CI/CD 流程。但以下做法可能会对许多团队有所帮助。
标记 AI 生成的代码
大多数源代码管理工具(包括 Git)都支持标记功能,使开发人员可以将标记应用于特定的代码片段。采用 AI 辅助编码的团队应该使用这些标签来识别全部或部分由 AI 生成的代码。
这是 CI/CD 策略的重要组成部分,因为总体而言,AI 生成的代码不如熟练的人类开发人员编写的代码可靠。因此,有时可能需要对 AI 生成的代码运行额外的测试,甚至在触发意外错误时将其从代码库中删除。如果您在 CI/CD 过程中系统地标记 AI 生成的代码,您就可以轻松地获取以不同的方式对待该代码。
为 AI 生成的代码编写特殊测试
类似地,一些团队可能会发现在 CI/CD 流水线的测试阶段为 AI 生成的代码部署额外的测试很有价值,这样既可以确保软件质量,又可以捕获 AI 引入代码库的任何易受攻击的代码或依赖项。
运行这些测试可能会导致更复杂的测试过程,需要管理两组测试:一组仅适用于 AI 生成的代码,一组适用于所有代码。因此,对于使用 AI 工具的团队来说,CI/CD 的测试阶段可能会变得更加复杂。
实施更严格的访问控制
在某些情况下,开发团队可能需要允许 AI 编码工具访问他们的一些代码库。但如果这些工具是由第三方供应商提供的,团队可能不希望将所有代码暴露给这些工具。
因此,AI 辅助编码可能需要 CI/CD 流水线内更严格的访问控制。开发人员需要制定策略来确定 AI 服务可以读取哪些代码或其他数据以及可以访问它们多长时间。
修改软件发布策略和期望
使用 AI 辅助编码工具可以加速 CI/CD 流水线,从而实现更快的发布。但它也可能产生相反的效果:如果 AI 生成的代码需要更多的审查或测试,它实际上可能会减慢 CI/CD 的速度。
无论哪种方式,团队都必须评估 AI 编码工具对其将新应用程序版本投入生产的能力的影响,然后相应地修改他们的发布策略(更不用说利益相关者的期望)。如果你的整体开发速度没有改变,你也不希望你的老板期望你开始一天多次发布,只是因为你现在能够使用 AI 编写一些代码。同样,如果您可以在 AI 的帮助下显着加快 CI/CD 速度,那么相应地更改您的发布时间表。
结 论
总体而言,AI 有潜力极大提高 DevOps 持续集成实践的效率、准确性和有效性。然而,还需要注意的是,这些解决方案需要仔细的管理和监督,以确保它们按预期工作并改进而不是阻碍流程。并且鉴于全面使用 AI 工具生成代码对于许多团队来说仍然相对新颖,CI/CD 流水线将如何改变以适应 AI 辅助编码仍有待观察。但如果团队想要在软件开发中充分利用 AI,源代码管理和标记、访问控制和发布计划等实践,可能还需要发展。