CI 经常失败?可能是立即 5 大原因…

正文翻译自文章 Top 5 Reasons for CI
Failure,主要介绍了
CI 失败的五只原因,包括 CI 服务的谬误选择、CI
工程师的匪专业性、随意变动CI服务器配置、CI服务器性能差、缺乏管理等。由
flow.ci-Meng
编译整理。


快开发不可能圆,必须发 CI 实践的助力。CI
是络绎不绝开展解析、构建、测试与布置的自动化流程,在正儿八经颁发暨生产条件之前,CI
会检查代码质量及测试产品之工作逻辑。

精美状态下,在构建失败时莫能够于色或者软件部署至生育条件。但是,持续集成的观点并无受列一个敏捷团队适用。一些敏捷团队非常重视
CI
实践,有的仅是为着做敏捷而召开,而有些团队完全忽视CI,更发生甚者从未配置了
CI 服务器。

在团队受到致CI实践让忽略有各种缘由。
我们还掌握公司所有不同之优先级,产品经理可能连无明白中质量、测试流程与圆构建的重点。
技术经理不克分红时来施行 CI 实践或修复出现问题的 CI 系统。
产品和技能经理一筹莫展了解彼此的优先级,导致部署了一个砸的成品交付给终端用户,并传递了一个老不好之商业价值。

这种措施看似没有问题,但实则十分危急。可能尽快之明天会面导致惨重的产品缺陷,从而严重影响工作运行。这种影响是不行预知的,一开始是金的损失,直至影响至商店声誉,最后可能一直招整事情了失败。

只是,即使产品经理和技能集团同意投入还多的时刻跟金实施或修复 CI
问题,一些集团按照不成。 这篇稿子我们谈谈了 CI
失败的五要命原因,并提供部分潜在解决方案,希望能帮而。

1. CI 劳务的不当选择

市面达成闹各种持续集成工具,CI
服务器解决方案得以是地方搭建呢堪云端托管。这里列有了扳平堆放的CI服务器解决方案。

Jenkins 是现阶段风靡的 CI
服务器之一,大家还赞成被盲目采取她。为了利用 Jenkins
的劳动,我们只好调整项目。现在,市场高达面世了一些没错的CI服务(国内如
flow.ci),选择适合自己可需要的CI服务确实是一个挑战。

推荐解决方案:

  • 细心调研市场并由此试验权衡各种需要,Slant上曾针对主流的各种CI产品开展了颇详细的好坏评估,可参照一下;

  • 关怀特性,例如管道支持,容器支持,平台支持,易用型,可用性等等;

  • 毫不为节省开支而挑选相同慢性通用的服所有平台的CI产品,每个平台还发生异之技巧需要跟挑战;

  • 及集体谈论并引以为戒过去的经历。

2. 业余的 CI 工程师

敏捷团队的工程师应该具备出色之编码能力,但才写代码和测试代码是不够的,还论及搭建配置环境的能力,运行命令行和编制脚本的技艺,还要来针对性自动化构建工具和仰/包管理工具的文化储备。

不久前,很多局开始拿基础设备​​转移至云端,所以还欲上学DevOps的技能,比如AWS,Azure
和 Heroku 等出口服务。配置工具,如bash,Ansible和Chef;以及 Docker 和
Kubernetes
等容器服务。最紧要的凡左右至少一种植脚本语言,即Bash,Ruby或Python。

当下并无代表你应该学习世界上的装有东西,但你用了解平台达成之物。假要同一称作
iOS 开发工程师,可能得掌握Cocoapods,Carthage 和 Swift
等靠管理工具。

还有用于构建的自动化工具,如以 APPLE
命令行工具之上的Fastlane,Rake和Make,并关注最新技术进步。

每个工程师还见面发健的物,有的擅长编写基本编程代码(即Java,Objective-C和Swift),并针对
DevOps
相关的构建自动化工具十分熟悉。有的工程师习惯给采取IDE环境开发(比如Eclipse、IntelliJ和Xcode),有些工程师擅长构建工具而写程序代码则弱一些。

这边说之CI业余工程师是那些无法离IDE,不会见利用命令行和本子工具的食指。他们只有喜爱GUI工具,拒绝下命令执行抑脚本。但是,CI服务器并从未GUI界面,所有的流程必须经脚本完成。

只要您的团组织发出及时仿佛人,那CI实践永远不会见中标。
他们唯恐勾来有不比质量之自动化脚本,大家的日子还浪费在改良构建自动化和CI服务器之间的切换上,而非是当真构建对作业有效之法力。

推介解决方案:

  • 选聘有CI和DevOps基础知识的工程师;

  • 造就CI业余工程师,最好的艺术是错过表面培训要请求里面生更的CI专家培训;

  • 短期招聘有CI专家来起CI流程和享用经历。

3. 随机变动CI服务器配置

绝大多数底CI服务器允许用户通过 Web 界面更改构建的部署。
这种方式而工程师轻松创建及编排 CI 工作流。
但是经常改变构建配置或者会见发出很多题材,例如忽略的有首要的构建步骤。
还有,每个人且发出看构建机器的权杖,这也许会见招致乱,
搞不清楚谁在什么时开了哟改变。当彼此不知道更改配置的内容,可能需要花十分丰富时才会一定到构建失败的来头。频繁更改
CI服务器可能会见招组织内的乱七八糟。

推荐解决方案:

  • 布置文件,bash脚本或其它连锁的公文在代码库中集中管理;
  • 避手动更改CI服务器上;
  • 控制CI服务器的造访权限,并由专人负责管理;
  • 匪容许用户改特定的构建步骤;

4. CI服务器性能差

当档次开支进程遭到,开发人员经常得更新代码,这会触发CI服务器上之构建流程。
这意味CI服务器需要持续运作大气任务,例如从远程服务器下充斥相关文书,备份数据库,运行Docker容器等,因此CI服务器必须快速而靠
,并且稳定。 性能差的 CI
服务器不仅浪费大家之构建时间,导致测试结果绝续续,也会见影响为工程师等士气沮丧。

推荐解决方案:

  • 摘更好重高配的服务器;
  • 永不管CI服务器挂于Wifi上;
  • 不用当CI服务器上安装不必要之软件;
  • 没错调度CI服务器资源;
  • 无须手动安装任何软件;
  • 免采用GUI访问机器,使用 SSH 访问即可。

5. 少管理

类型管理在尽CI实施中打在关键作用,必须对整个构建流程设定严格的导,同时对任何不遵守指引的行零容忍。在另外情形下都未克发布CI流程中断的软件。任何构建中断都如于视为紧急事件并以最高优先级进行修补。很多技巧经理可以就这或多或少,但有从来不CI经验的管理人员可能会见令继续出而不顾代码质量。在如此的治本下,CI实施不可能成。

引进解决方案:

  • 立集体的CI流程并严格执行;
  • 树项目经理并用以CI实施。

结语

每当敏捷团队饱受推行CI是蛮有挑战的,但仍一些严格的规则并避免大规模错误可以还实惠地履CI流程。你当CI实践备受有安的经历?你看CI流程有效呢?欢迎分享而的眼光!


flow.ci
,融入了 workflow
机制的络绎不绝集成(CI)服务,也得解啊自动化流程平台,除了合代码、编译、测试外,还好合常用的工具科学技术、灵活自定义流程。本文由
flow.ci-Meng
翻译整理,想看更多技术文章,请访问 flow.ci
官方技术博客。

Leave a Comment.