包括 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工程师于团遭到之角色各不相同,但来个别单共同点:自动化和相连集成。