在 DevOps 实践中,构建自动化的持续集成和持续交付(CI/CD)流水线可以大大提高开发和测试效率。以下是一些步骤和建议:
-
版本控制:所有的源代码都应该放在版本控制系统中,如 Git 仓库。这样,每次代码变更都可以被跟踪,同时也方便团队协作,这是做好 CI/CD 的第一步。建议选用合适的分支管理实践,如主干开发或特性分支开发等,注意要确保小批量工作,代码频繁提交、频繁合并。
-
自动化构建:使用自动化构建工具,实现自动化编译、打包应用等任务。每次代码提交或合并都应该触发自动化构建。
-
单元测试和代码扫描:自动化构建后可以触发单元测试和代码扫描,这样有助于尽快发现和修复代码中的问题。这些测试应该足够全面,从而确保软件按预期工作。单元测试最好能几分钟或更短的时间内跑完,否则开发人员就不愿意频繁运行它们。测试导致的流水线失败要作为高优先级事项第一时间给予解决,否则测试失败可能源于许多不同的变更,从而难以调试,时间长了会很难维护,对流水线执行结果的关注度也会下降。
-
部署到测试环境并进行测试:部署到测试环境进行场景集成验证,如果有专门的测试团队,可以进行提测检查、提测组件部署及产品端到端的场景自动化验证,保障应用质量。还要进行质量门禁验证,确保上线前满足企业要求的质量标准。
-
部署到生产环境:如果应用通过了所有的测试,那么就可以自动化部署到生产环境中。为了降低风险,可以使用蓝绿部署或金丝雀发布等策略。
此外,为了让持续集成和持续交付达到预期效果,除了上述提到的版本控制、自动化构建、单元测试、代码扫描、自动化测试、自动化部署等实践,还需要考虑良好的系统架构。创建松耦合的架构,让团队可以按需测试和部署应用,而无需与其他应用进行复杂的协调和编排。松散耦合的架构让团队能够独立工作,而无需依赖其他团队的支持和相应,从而提升开发和测试效率。
在具体落地的时候,建议绘制一张包含分支模型和测试分级分层的 CI/CD 流水线设计大图,包括在各个分支上需要运行哪些流水线、各流水线的目标、触发机制、流水线阶段和步骤、质量门禁、流水线运行时长等要素,以便在全局达成统一认知并落地实现。同时,最好持续度量流水线的执行效率和稳定性,从而真正帮助开发和测试提效。
本文整理自思码逸出品的《研发效能100问》,原作者:张乐 腾讯研发效能资深技术专家,《软件研发效能权威指南》主编