包括 CI 服务之错选择、CIDevOps工程师是为加速开发及营业组织里的付效率要留存的大桥。

本文翻译自文章 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 和 Swift
等靠管理工具。

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

每个工程师还见面有工的东西,有的擅长编写基本编程代码(即Java,Objective-C和Swift),并针对性
DevOps
相关的构建自动化工具十分熟悉。有的工程师习惯吃以IDE环境开发(比如Eclipse、IntelliJ和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的Hudson项目更名为Jenkins的家伙。

再有一部分任何托管的CI产品,如全托管在讲话中之CircleCI和Travis
CI。这些托管的CI产品越来越受到多少团的接,因为它们若工程团队能够尽早开始连集成。

总结

DevOps工程师扮演的最为要角色是收拾软件开发和运营团队之间的差距,提高软件提交速度。

尽管DevOps工程师在社中的角色各不相同,但有一定量个共同点:自动化和持续集成。

相关文章