如果你是 DevOps 新人,请查看这 5 个步骤来构建你的第一个 DevOps 流水线。
-- Bryant Son(作者)
DevOps 已经成为办理软件开拓过程中涌现的缓慢、伶仃或者其他故障的默认办法。但是当你刚打仗 DevOps 并且不愿定从哪开始时,就意义不大了。本文探索了什么是 DevOps 流水线并且供应了创建它的 5 个步骤。只管这个教程并不全面,但可以给你往后上手和扩展打下根本。首先,插入一个小故事。

我曾经在花旗集团的云小组事情,开拓 (Infrastructure as a Service)根本举动步伐即做事网页运用来管理花旗的云根本举动步伐,但我常常对研究如何让开发流水线更加高效以及如何带给团队积极的文化感兴趣。我在 Greg Lavender 推举的书中找到了答案。Greg Lavender 是花旗的云架构和根本举动步伐工程(即 Phoenix 项目 )的 CTO。这本书只管阐明的是 DevOps 事理,但它读起来像一本小说。
书后面的一张表展示了不同公司支配在发布环境上的频率:
Amazon、Google、Netflix 怎么能做到如此之频繁?那是由于这些公司弄清楚了如何去实现一个近乎完美的 DevOps 流水线。
但在花旗履行 DevOps 之前,情形并非如此。那时候,我的团队拥有不同 构建阶段(stage)的环境,但是在开拓做事器上的支配非常手工。所有的开拓职员都只能访问一个基于 IBM WebSphere Application 社区版的开拓环境做事器。问题是当多个用户同时考试测验支配时,做事器就会宕机,因此开拓职员在支配时就得相互关照,这一点相称痛楚。此外,还存在代码测试覆盖率低、手动支配过程繁琐以及无法根据定义的任务或用户需求跟踪代码支配的问题。
我意识到必须做些事情,同时也找到了一个有同样感想熏染的同事。我们决定互助去构建一个初始的 DevOps 流水线 —— 他设置了一个虚拟机和一个 Tomcat 做事器,而我则架设了 Jenkins,集成了 Atlassian Jira、BitBucket 和代码覆盖率测试。这个业余项目非常成功:我们近乎全自动化了开拓流水线,并在开拓做事器上实现了险些 100% 的正常运行,我们可以追踪并改进代码覆盖率测试,并且 Git 分支能够与支配任务和 jira 任务关联在一起。此外,大多数用来构建 DevOps 所利用的工具都是开源的。
现在我意识到了我们的 DevOps 流水线是多么的原始,由于我们没有利用像 Jenkins 文件或 Ansible 这样的高等设置。然而,这个大略的过程运作良好,这大概是由于 Pareto 原则(也被称作 80/20 法则)。
DevOps 和 CI/CD 流水线的简要先容如果你问一些人,“什么是 DevOps?”,你或许会得到一些不同的回答。DevOps,就像敏捷,已经发展到涵盖着诸多不同的学科,但大多数人至少会赞许这些:DevOps 是一个软件开拓实践或一个 软件开拓生命周期(software development lifecycle)(SDLC),并且它的核心原则是一种文化上的变革 —— 开拓职员与非开拓职员呼吸着同一片天空的气息,之前手工的事情变得自动化;每个人做着自己善于的事;同一韶光的支配变得更加频繁;吞吐量提升;灵巧度增加。
虽然拥有精确的软件工具并非实现 DevOps 环境所需的唯一东西,但一些工具却是必要的。最关键的一个便是持续集成和持续支配(CI/CD)。在流水线环境中,拥有不同的构建阶段(例如:DEV、INT、TST、QA、UAT、STG、PROD),手动的事情能实现自动化,开拓职员可以实现高质量的代码,灵巧而且大量支配。
这篇文章描述了一个构建 DevOps 流水线的五步方法,就像下图所展示的那样,利用开源的工具实现。
Complete DevOps pipeline
闲话少说,让我们开始吧。
第一步:CI/CD 框架首先你须要的是一个 CI/CD 工具,Jenkins,是一个基于 Java 的 MIT 容许下的开源 CI/CD 工具,它是推广 DevOps 运动的工具,并已成为了 事实标准(de facto standard) 。
以是,什么是 Jenkins?想象它是一种神奇的万能遥控,能够和许多不同的做事器和工具打交道,并且能够将它们统一安排起来。就本身而言,像 Jenkins 这样的 CI/CD 工具本身是没有用的,但随着接入不同的工具与做事器时会变得非常强大。
Jenkins 仅是浩瀚构建 DevOps 流水线的开源 CI/CD 工具之一。
下面便是利用 CI/CD 工具时 DevOps 看起来的样子。
CI/CD tool
你的 CI/CD 工具在本地主机上运行,但目前你还不能够做些别的。让我们紧随 DevOps 之旅的脚步。
第二步:源代码掌握管理验证 CI/CD 工具可以实行某些魔术的最佳(也可能是最大略)方法是与源代码掌握管理(SCM)工具集成。为什么须要源代码掌握?假设你在开拓一个运用。无论你什么时候构建运用,无论你利用的是 Java、Python、C++、Go、Ruby、JavaScript 或任意一种措辞,你都在编程。你所编写的程序代码称为源代码。在一开始,特殊是只有你一个人事情时,将所有的东西放进本地文件夹里或许都是可以的。但是当项目变得弘大并且约请其他人协作后,你就须要一种办法来避免共享代码修正时的合并冲突。你也须要一种办法来规复一个之前的版本——备份、复制并粘贴的办法已经由时了。你(和你的团队)想要更好的办理办法。
这便是 SCM 变得不可或缺的缘故原由。SCM 工具通过在仓库中保存代码来帮助进行版本掌握与多人协作。
只管这里有许多 SCM 工具,但 Git 是最标准恰当的。我极力推举利用 Git,但如果你喜好这里仍有其他的开源工具。
拥有 SCM 之后,DevOps 流水线看起来就像这样。
Source control management
CI/CD 工具能够自动化进行源代码检入检出以及完成成员之间的协作。还不错吧?但是,如何才能把它变成可事情的运用程序,使得数十亿人来利用并欣赏它呢?
第三步:自动化构建工具真棒!
现在你可以检出代码并将修正提交到源代码掌握,并且可以约请你的朋友就源代码掌握进行协作。但是到目前为止你还没有构建出运用。要想让它成为一个网页运用,必须将其编译并打包成可支配的包或可实行程序(把稳,像 JavaScript 或 PHP 这样的阐明型编程措辞不须要进行编译)。
于是就引出了自动化构建工具。无论你决定利用哪一款构建工具,它们都有一个共同的目标:将源代码构建成某种想要的格式,并且将清理、编译、测试、支配到某个位置这些任务自动化。构建工具会根据你的编程措辞而有不同,但这里有一些常日利用的开源工具值得考虑。
太棒了!
现在你可以将自动化构建工具的配置文件放进源代码掌握管理系统中,并让你的 CI/CD 工具构建它。
Build automation tool
统统都如此美好,对吧?但是在哪里支配它呢?
第四步:网页运用做事器到目前为止,你有了一个可实行或可支配的打包文件。对任何真正有用的运用程序来说,它必须供应某种做事或者接口,以是你须要一个容器来发布你的运用。
对付网页运用,网页运用做事器便是容器。运用程序做事器供应了环境,让可支配包中的编程逻辑能够被检测到、呈现界面,并通过打开套接字为外部天下供应网页做事。在其他环境下你也须要一个 HTTP 做事器(比如虚拟机)来安装做事运用。现在,我假设你将会自己学习这些东西(只管我会不才面谈论容器)。
这里有许多开源的网页运用做事器。
现在 DevOps 流水线差不多能用了,干得好!
Web application server
只管你可以在这里停下来并进行进一步的集成,但是代码质量对付运用开拓者来说是一件非常主要的事情。
第五步:代码覆盖测试实当代码测试件可能是另一个麻烦的需求,但是开拓者须要尽早地捕捉程序中的所有缺点并提升代码质量来担保终极用户满意度。幸运的是,这里有许多开源工具来测试你的代码并提出改进质量的建议。乃至更好的,大部分 CI/CD 工具能够集成这些工具并将测试过程自动化进行。
代码测试分为两个部分:“代码测试框架”帮助进行编写与运行测试,“代码质量改进工具”帮助提升代码的质量。
代码测试框架代码质量改进工具把稳,之条件到的大多数工具和框架都是为 Java、Python、JavaScript 写的,由于 C++ 和 C# 是专有编程措辞(只管 GCC 是开源的)。
现在你已经利用了代码覆盖测试工具,你的 DevOps 流水线该当就像教程开始那幅图中展示的那样了。
可选步骤容器正如我之前所说,你可以在虚拟机(VM)或做事器上发布你的运用,但是容器是一个更好的办理方法。
什么是容器 ?简要的先容便是 VM 须要占用操作系统大量的资源,它提升了运用程序的大小,而容器仅仅须要一些库和配置来运行运用程序。显然,VM 仍有主要的用场,但容器对付发布运用(包括运用程序做事器)来说是一个更为轻量的办理办法。
只管对付容器来说也有其他的选择,但是 Docker 和 Kubernetes 更为广泛。
理解更多信息,请查看 Opensource.com 上关于 Docker 和 Kubernetes 的其它文章:
什么是 Docker?Docker 简介什么是 Kubernetes?从零开始的 Kubernetes 实践中间件自动化工具我们的 DevOps 流水线大部分集中在协作构建与支配运用上,但你也可以用 DevOps 工具完成许多其他的事情。个中之一便是利用它实现 根本举动步伐管理(Infrastructure as Code)(IaC)工具,这也是熟知的中间件自动化工具。这些工具帮助完成中间件的自动化安装、管理和其他任务。例如,自动化工具可以用精确的配置下拉运用程序,例如网页做事器、数据库和监控工具,并且支配它们到运用做事器上。
这里有几个开源的中间件自动化工具值得考虑:
获取更多中间件自动化工具,查看 Opensource.com 上的其它文章:
Ansible 快速入门指南Ansible 自动化支配策略配置管理工具 Top 5之后的发展这只是一个完全 DevOps 流水线的冰山一角。从 CI/CD 工具开始并且探索其他可以自动化的东西来使你的团队更加轻松的事情。并且,探求 开源通讯工具 可以帮助你的团队一起事情的更好。
创造更多见地,这里有一些非常棒的文章来先容 DevOps :
什么是 DevOps节制 5 件事成为 DevOps 工程师所有人的 DevOps在 DevOps 中开始利用预测剖析利用开源 agile 工具来集成 DevOps 也是一个很好的主张:
什么是 agile ?4 步成为一个了不起的 agile 开拓者via: https://opensource.com/article/19/4/devops-pipeline
作者: Bryant Son 选题: lujun9972 译者: LuMing 校正: wxy
本文由 LCTT 原创编译, Linux中国 名誉推出
点击“理解更多”可访问文内链接