CI 经常失败?可能是即刻 5 大原因…DevOps工程师到底做些什么?

正文翻译自文章 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工程师于组织中的角色各不相同,但产生个别个共同点:自动化和连集成。

相关文章