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(Swift)等倚重管理工具。

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

每个工程师都会有善于的事物,有的擅长编写基本编程代码(即Java,Objective-C和Swift),并对
DevOps
相关的构建自动化工具十分熟知。有的工程师习惯于采用IDE环境开发(比如Eclipse、AMDliJ和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
官方技术博客

相关文章