接下来运维团队来化解代码安排进程中冒出的问题,CI 失利的八个原因

本文翻译自小说 Top 5 Reasons for CI
Failure
,首要介绍了
CI 退步的五个原因,包罗 CI 服务的一无所长接纳、CI
工程师的不专业性、随意变更CI服务器配置、CI服务器性能差、缺少管理等。由
flow.ci-Meng
编译整理。

大家事先曾经听到很多座谈DevOps和DevOps世界的新星动向的工作,不过就DevOps工程师本身,到底干些什么啊?


在最纯粹的存在格局上的话,DevOps工程师是为了增加速度开发和运营社团之间的交由效能而存在的大桥。

高效开发不容许完美,必须有 CI 实践的助力。CI
是延绵不断开展辨析、构建、测试和安插的自动化流程,在正儿八经发布到生产条件以前,CI
会检查代码质量和测试产品的工作逻辑。

DevOps工程师在软件生命周期中能带来如何?

能够图景下,在构建退步时无法让项目或软件安插到生育环境。不过,持续集成的见识并不被每一个敏捷团队适用。一些敏捷团队相当敬服CI
实践,有的只是为着做敏捷而做,而有点团队完全忽略CI,更有甚者从未配置过
CI 服务器。

在传统的付出周期中,软件开发人士会在连年的编写代码后,将软件提交QA团队展开测试,然后将最终版本交给运营团队配置。那几个等级,即开发,测试和陈设期间是短缺协作的。

在团队中导致CI实践被忽视有各类缘由。
我们都知晓信用社有着差其余优先级,产品经营可能并不知道里面质料、测试流程和全部构建的主要。
技术高管不可以分红时间来施行 CI 实践或修复出现问题的 CI 系统。
产品和技术主任一筹莫展驾驭互相的优先级,导致陈设了一个败诉的成品交付给终端用户,并传递了一个这么些不好的商业价值。

开发编写的代码最后并交付运维团队,然后运维团队来缓解代码布署进程中出现的题材,或者将代码交还给开发社团来化解碰着的题目。所有那么些都导致了软件开发进程的减速。

那种格局看似不成问题,但实际上尤其危急。可能尽快的未来会招致惨重的出品缺陷,从而严重影响工作运行。那种影响是不可预见的,一发轫是金钱的损失,直至影响到商店声誉,最终可能直接导致整个工作完全失利。

不过在DevOps形式下,那多少个协会不再孤立。一大半岁月内,从开发、测试、安插到营业,相关的工程师合并成一个公司还要贯穿整个软件生命周期,开发不再限制于某一个技艺而是一整套技艺解决方案。当然安全团队也由此有可能在那一个软件生命周期中与支出和运营更严苛地工作,及早发现安全题材。

可是,纵然产品老董和技艺公司同意投入越来越多的日子和钱财实施或修复 CI
问题,一些团队仍未成功。 这篇小说大家谈谈了 CI
战败的五大原因,并提供部分神秘解决方案,希望可以协理您。

怎么DevOps工程师的角色各不同呢?

1. CI 劳动的荒唐选取

市面上有各个持续集成工具,CI
服务器解决方案得以是本地搭建也得以云端托管。那里列出了一堆的CI服务器解决方案

Jenkins 是时下风行的 CI
服务器之一,大家都倾向于盲目使用它。为了选择 Jenkins
的劳务,大家不得不调整项目。现在,市场上出现了一些不错的CI服务(国内如
flow.ci),采用符合自己适合必要的CI服务真正是一个挑衅。

DevOps工程师并不是怎么异样事物。比如系统工程师,自动化工程师,软件工程师,Linux工程师等等工程师都能变成DevOps工程师。

推介解决方案:

  • 仔细调研市场并经过实验权衡各个须求,Slant上早已对主流的种种CI产品进展了很详细的高低评估,可参看一下;

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

  • 不要为了节省成本而挑选一款通用的适应所有平台的CI产品,每个平台都有例外的技巧须求和挑衅;

  • 和社团座谈并借鉴过去的阅历。

不过,DevOps工程师的行事性质因协会而异。比如有些是在基础设备自动化和保安中发挥功用,而在别的一些团体中却是在方方面面交付链中发挥成效而已。

2. 业余的 CI 工程师

敏捷团队的工程师应该具备优良的编码能力,但只是写代码和测试代码是不够的,还论及搭建配置环境的能力,运行命令行和编排脚本的技能,还要有对自动化构建工具和看重/包管理工具的学识储备。

近日,很多集团初阶把基础设备​​转移到云端,所以还需求学习DevOps的技能,比如AWS,Azure
和 Heroku 等云服务。配置工具,如bash,Ansible和Chef;以及 Docker 和
Kubernetes
等容器服务。最重大的是控制至少一种脚本语言,即Bash,Ruby或Python。

那并不意味你应有学习世界上的有着东西,但您需求精晓平台上的事物。借使一名
iOS 开发工程师,可能要求驾驭Cocoapods,Carthage 和 斯威夫特等器重管理工具。

再有用于构建的自动化工具,如在 APPLE
命令行工具之上的法斯特lane,Rake和Make,并关怀新型技术发展。

每个工程师都会有擅长的东西,有的擅长编写基本编程代码(即Java,Objective-C和斯威夫特),并对
DevOps
相关的构建自动化工具分外熟稔。有的工程师习惯于采纳IDE环境开发(比如Eclipse、英特尔liJ和Xcode),有些工程师擅长构建工具但写程序代码则弱一些。

此地说的CI业余工程师是那多少个不能脱离IDE,不会动用命令行和本子工具的人。他们只喜欢GUI工具,拒绝使用命令行或脚本。可是,CI服务器并没有GUI界面,所有的流水线必须经过脚本落成。

一经你的团队有这类人,那CI实践永远不会成功。
他们恐怕写出部分低质料的自动化脚本,我们的时日都浪费在改正构建自动化以及CI服务器之间的切换上,而不是实在构建对业务有效的功效。

DevOps工程师的角色各分歧,因为他必须透过克服传统合作障碍与支出和运维人士开展协作。而各异的团体有两样的障碍,因而其扮演的角色当然不一样。

引进解决方案:

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

  • 铸就CI业余工程师,最好的措施是去表面培训或者请里面有经历的CI专家培训;

  • 长期招聘一些CI专家来树立CI流程和享用经验。

DevOps工程师平常工作中最器重的两个方面

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

绝半数以上的CI服务器允许用户通过 Web 界面更改构建的计划。
那种格局使工程师轻松成立和编制 CI 工作流。
不过时常转移构建配置或者会发生众多问题,例如忽略的局地重大的构建步骤。
还有,每个人都有访问构建机器的权限,那说不定会招致混乱,
搞不清楚什么人在如何时间做了怎么改变。当相互不亮堂更改配置的情节,可能必要用度很长日子才能固定到构建失利的由来。频仍更改
CI服务器可能会招致集体内的紊乱。

即使DevOps工程师的角色各差别,但差点拥有DevOps工程师每日都会接触两件事

引进解决方案:

  • 安顿文件,bash脚本或其余相关的文本放在代码库中集中管理;
  • 幸免手动更改CI服务器上;
  • 控制CI服务器的拜会权限,并由专人负责管理;
  • 不容许用户修改特定的构建步骤;
  • 自动化和不止集成。

4. CI服务器性能差

在项目开发进度中,开发职员平时索要立异代码,那会触发CI服务器上的构建流程。
那表示CI服务器必要不断运转大气职责,例如从远程服务器下载相关文件,备份数据库,运行Docker容器等,因而CI服务器必须快速可信,并且稳定。 性能差的 CI
服务器不仅浪费大家的构建时间,导致测试结果断断续续,也会潜移默化让工程师们士气失落。

自动化:

推介解决方案:

  • 选料更好更高配的服务器;
  • 无须把CI服务器挂在Wifi上;
  • 毫不在CI服务器上安装不要求的软件;
  • 没错调度CI服务器资源;
  • 绝不手动安装任何软件;
  • 幸免选拔GUI访问机器,使用 SSH 访问即可。

与保安基础设备有关的大部职分仍旧是手动的。企业更欣赏使用传统的经过验证的措施,而不是自动化相同的流程,因为她们不想冒任何风险。但事实是自动化职分将推进更飞速地开发和布局软件,那意味着能加速公司从客户处赚取利益的速度。

5. 缺失管理

品种管理在整整CI实施中起着关键作用,必须对任何构建流程设定严峻的指点,同时对其它不信守指导的作为零容忍。在其他动静下都无法发表CI流程中断的软件。任何构建中断都要被视为殷切事件并以最高优先级进行修补。很多技巧老总可以形成那或多或少,但部分一贯不CI经验的管理人士可能会命令继续支付而不顾代码质地。在这么的军事管制下,CI实施无法得逞。

为了解说清楚那点,大家可以设想上面这一个场馆,系统工程师如若每日按须要手动备份所有服务几回,那么她得以经过在云端设施上编制脚本来达成那项工作而不是浪费时间来形成那项工作。通过自行执行备份进程,您可以让系统工程师更小心于重点的工作,例如对由于某些因为虚拟机问题而急需关闭的劳动举行故障排除。手动执行同一的操作会造成您的系统工程师的负担过重,而那几个工程师的频率将大大下落。那只是一个分外不难的事例,通过不履行自动化来论述资源浪费的定义。

引进解决方案:

  • 确立集体的CI流程并严厉执行;
  • 扶植项目高管并用以CI实施。

DevOps因而得以当作连忙的扩张,因为它可以下落由于开发人士、QA和运维团队之间的非合营而恐怕出现的高风险。DevOps通过认识到高质地的软件开发要求包罗质地担保和运营专家在内的保有利益相关方的频频参加和汇报,伸张了便捷原则的限制。

结语

在敏捷团队中进行CI是卓殊有挑衅的,但按照一些严苛的规则并防止大规模错误可以更实用地实施CI流程。你在CI实践中有哪些的阅历?你觉得CI流程有效吗?欢迎分享你的看法!


flow.ci
,融入了 workflow
机制的各处集成(CI)服务,也足以知道为自动化流程平台,除了集成代码、编译、测试之外,还足以合二为一常用的工具、灵活自定义流程。本文由
flow.ci-Meng
翻译整理,想阅读更加多技术作品,请访问 flow.ci
官方技术博客

有为数不少事务可以通过自动的点子来成功,比如在揭橥新的补丁的时候更新ApacheWeb服务器,更新配备在服务器上的开源软件的版本。

DevOps工程师能够由此创造脚本环境活动完结布局服务器的历程。您可以在一个节点上运行脚本,但如果在数千上百个节点上手工运行相同的脚本将变得不切实际。脚本在这边就变得不再是一个可扩展的化解方案了。

之所以,必要以可扩充的艺术跨大批量节点自动化举行软件配置、配置管理和应用程序安插。那是部署管理工具(如Chef,Puppet和Ansible)在DevOps世界中派上用场的地点。

不停集成:

关于DevOps的另一个首要方面是在软件开发实践中执行持续集成(CI),
CI允许开发人士不断更新自动化构建、测试使用到的资源库。

连发集成系统平时包括一个足以穿梭监控版本控制系统的工具。只要检测到对版本控制系统的更改,系统就会自动构建并测试你的应用程序。若是构建或测试没有经过的,系统会即时文告开发人士解决问题。

没完没了集成可确保持续交付,因为兼具代码更改都会不断布署到构建阶段之后的测试和生产条件中。

由此持续集成,开发人士可以从人工任务中解脱出来,提升工作功能,因为后天在CI中以自动化情势成功机关构建职分,并且由于越来越频仍的测试,错误和bug更便于找到和化解,从而最后用户的更新能够更快,更频仍地开展。

有分化的出品和工具得以扶持你在团队中贯彻持续集成。有些工具可让您将CI
服务器托管在你自己的网络基础架构中。最受欢迎的是从Sun的赫德森项目更名为Jenkins的工具。

还有部分其余托管的CI产品,如完全托管在云中的CircleCI和Travis
CI。那些托管的CI产品尤其受到小团伙的欢迎,因为它使工程团队可以急速先河不断集成。

总结

DevOps工程师扮演的最重大角色是修复软件开发和运营社团之间的差异,升高软件提交速度。

固然DevOps工程师在公司中的角色各差距,但有五个共同点:自动化和缕缕集成。

相关文章