【华为云敏捷扑克牌】持续开发与集成—持续集成
“小明,你又在编译啊?每次看你屏幕都在编译。”项目经理路过小明的座位说道。
“我也不想啊,每次提交代码到主干后都需要编译1个多小时。”小明吐槽说。
原本大家每天都会提交一次代码,为了避免被老板认为有“摸鱼”的嫌疑,全都变成若干天提交一次或者一个功能模块完成后再提交到代码库。以上仅是开发日常的一个画面,我们还经常会遇到代码冲突,缺陷集中爆发等问题。这些都是传统开发中经常出现的情况。项目越大,成员越多,集成时的冲突和问题就越多,每次发版前的集成简直就是一场灾难,业界有个专有名词叫“集成地狱”。为了解决这些的问题,持续集成应运而生。
什么是持续集成
持续集成(Continuous Integration,CI)最开始作为极限编程的一项实践出现在大家面前,随着敏捷软件开发方法的推行,小步快跑的理念由开发侧推行到运维侧,端到端的DevOps应运而生,CI作为必不可少的一环逐渐被大众接受和采纳。
持续集成就是要求开发人员尽早且频繁的提交代码到代码仓,提交代码后,对整个应用进行构建,并对其执行代码级的自动化测试,结果反馈给开发人员,如果出现失败,就要马上进行修复。流程图如下所示。
持续集成的要点
1.代码源透明单一
保证大家都使用相同的代码源,可以随时获取到最新的软件。
2.要频繁提交代码
每人每天都要向主干分支提交代码,并进行构建和测试。提交前要首先在本地完成构建和测试。因为每次变更都很小,所以集成起来也很轻松。使用此方式,每完成一小段代码,就能很快地更新给整个团队,而不是一次更新一大段。
3.集成服务器的性能要保证
工欲善其事,必先利其器。硬件首先要满足,同时还要优化构建过程,仅包含必要的任务项,如代码检查、编译构建、代码级的自动化测试,加快构建的速度。
4.自动化的构建测试
相对于人工操作,自动化速度更快,避免误操作,解放了人力资源去做更重要的事情。
5.集成后的信息要准确及时反馈给团队成员
信息要准确精炼,避免冗余信息过多,致使开发人员渐渐忽略提示邮件,错过重要的反馈。
6.建立相应的工程师文化
传统开发中,代码长期在本地放置,联调之前才提交到代码仓库,我们应该改正这种“推迟风险”的心理,要及早提交,并做到小步提交、代码完整、不影响已有功能等。并且每个人都要为自己提交的代码负责,集成失败要马上修复,修复成功后再继续其他工作。
持续集成的好处
1.尽早发现缺陷,降低集成风险。
多数情况下,一个项目会有多个人单独处理任务或者一部分代码,人员越多,整合的风险越大,而调试、解决问题本身会是非常痛苦的,我们很可能需要大量修改代码。频繁的集成,可以极大减少此类问题,降低缺陷修复成本。
2.保障代码质量。
自动化流水线将开发人员从手工操作中解放出来,这样可以把精力更多的放在业务代码和功能上,从而获得更高质量的软件。
3.有效的版本控制。
通过及时的信息反馈如果有人提交的代码有问题,团队会即时收到通知,在有任何人拉取之前解决问题。
4.减少团队间摩擦。
明确而公正的制度流程,可以减少团队之间的争吵。
5.改善测试团队生活质量
通过不同版本和构建隔离并追踪错误,可以有效减轻测试团队负担。
6.部署更快。
自动化可以让原本繁琐耗时的部署工作变得轻松高效。
7.增强团队信心和士气。
团队成员不必再为潜在错误可能会造成的不良后果而忧心忡忡,可以轻装上阵去创造更好的软件。
8.团队新成员可以更容易地融入整个项目之中。
简单便捷的集成步骤,让新的团队成员能够更快的上手,适应项目环境,进入工作状态。
DevCloud实践
市面上已有很多开源持续集成工具,例如我们熟悉的Jenkins,还有TeamCity、Travis CI、GO CD、Bamboo、Gitlab CI、CircleCI等等。
华为云DevCloud支持持续集成,提供代码托管、代码检查、编译构建、部署等服务,支持Java、C、PHP、Python等混合语言构建,支持可视化、一键式部署。
编译构建
编译构建为开发者提供配置简单的混合语言构建平台,支持任务一键创建、配置和执行,实现获取代码、构建、打包等活动自动化。为客户提供高速、低成本、配置简单的混合语言构建能力,帮助用户缩短构建时间,提升构建效率。用户可根据自己的编程语言,编程环境,在“添加步骤”下根据提示自主配置所需的构建步骤。
构建步骤配置完成后,可执行该任务,对指定的代码仓库进行编译构建。页面会显示构建过程和全量日志。
持续集成
华为云DevCloud的编译构建功能支持持续集成,在【编译菜单】子菜单下点击“执行计划”,将“持续集成”选项中的“提交代码触发执行”开关打开即可。
参考附录
- Martin Fowler的持续集成:https://www.martinfowler.com/articles/continuousIntegration.html
华为云敏捷扑克牌
华为云敏捷扑克牌是一套敏捷和DevOps体系知识卡牌,由华为云DevCloud专家服务团队精心研发。限量兑换:https://devcloud.huaweicloud.cn/bonususer/home/costbonus
- 点赞
- 收藏
- 关注作者
评论(0)