Jenkins X 加速 DevOps 能力提升

2019-05-14   出处:V社 北京社  作/译者:James Rawlings  

James Rawlings 在DOIS 北京大会上分享Jenkins的现场照片

Jenkins X 是为云原生应用重新构想的CI / CD工具平台,受 DevOps 状态报告的影响很大, 同时也深受最近由 Nicole Forsgren,Jez Humble和 Gene Kim 联合编写的《Accelerate: The Science Behind Devops》一书的影响。

多年来,来自DevOps领域的鼓舞人心的思想领袖和数据科学家分析了来自现实世界团队和组织的数据,其中“Accelerate”这本书为Jenkins X推荐了正在实施的许多功能,以便用户获得已被科学证明的许多优势。

我们已经开始为 Jenkins X 当前可用的功能编写文档,并将继续提供更多功能。

来源:感谢tracymiranda的图片

对所有构件使用版本控制

Weaveworks人员创造了我们喜爱的GitOps这个工具。对环境的任何更改,无论是新应用程序,版本升级,资源限制更改还是简单的应用程序配置,都应该作为对Git的提出Pull请求,对其进行检查,这就像开发环境的CI形式一样,然后由团队批准这可以控制进入相关环境的内容。

我们现在可以启用分支,并对环境的任何更改具有完全可跟踪性。
相关加速功能:对所有生产构件使用版本控制

自动化您的部署过程

环境

Jenkins X 将在安装过程中自动创建Git支持的环境,并可以轻松使用jx create environment添加新环境。此外,当通过quickstart(jx create quickstart),基于Java的SpringBoot(jx create spring)或导入现有应用程序(jx import)创建新应用程序时,Jenkins X将自动添加CI / CD管道并设置jobs、git repos和webhooks以启用自动部署过程。

开箱即用的Jenkins X创建了Staging and Production(这是可自定义的)永久环境以及Pull Requests的预览应用程序的临时环境。

预览环境

我们正试图在变更合并到主分支之前,为变更进行尽可能多的测试,安全性验证和实验。通过使用临时动态创建的预览环境,任何拉取请求都可以构建和部署预览版本,包括提供给下游可部署应用程序的库。这意味着我们可以与参与代码审查,更好地与所有团队测试和协作,以便决定变更是否可以上线。

最终,Jenkins X希望提供一种约定:开发人员,测试人员,设计人员和产品经理可以尽可能确保将更改合并到主数据库时按预期工作。我们希望确信提议的更改不会对任何服务或功能产生负面影响,也不会使预期提供的价值打折。

预览环境变得非常有趣的地方是,当我们能够通过成熟度和信心的各个阶段推进PR时,我们开始将一定比例的实际生产流量(如beta用户)引导到它。然后,我们可以分析建议的变更的价值,并使用假设驱动开发分析可能随着时间的推移运行多个自动化实验。这有助于我们更好地了解变更在发布给所有用户后的执行情况。

相关加速功能:培养并激发团队实验
使用预览环境是引入更好的测试自动化的好方法。虽然Jenkins X支持这一点,但我们还没有针对预览环境运行自动化测试的示例。

一个简单的测试是确保应用程序启动正常并且检查Kubernetes一段时间的活动是否通过。这涉及到相关加速功能:实施与测试自动化相关的加速功能:自动执行部署过程

永久环境

在软件开发中,我们习惯于在多个环境中工作,直到将变更推到线上生产环境。虽然这看起来像往常一样,但是如果出于任何原因,通过某些过程认为变更对主分支的合并没有发生,那么它可能会导致其他变更的显著延迟。随后的提交将被阻止,并可能导致需要紧急提交到主分支的变更的延迟。

如上所述,Jenkins X希望在合并到master之前验证任何更改和实验。我们希望在升级之前将暂存环境中的更改保留在那里很短的时间,最好是以自动方式进行。

默认的Jenkins X管道通过环境提供部署自动化。这些可以自定义以满足您自己的CI / CD管道要求。

Jenkins X建议Staging应尽可能地反映生产环境,理想情况是使用服务网格将实际生产数据隐藏。这也有助于在预览中开发更改,我们可以在分段中链接到非生产服务。

相关加速功能:自动执行部署过程

基于主干的开发模式

Accelerate一书发现,使用基于主干的开发和短期分支的团队表现更好。这一直适用于Jenkins X核心团队成员,因此这是Jenkins X在设置Git存储库和CI / CD作业时实现的一项简单功能。

实施持续集成

Jenkins X认为CI是在将请求合并到master之前通过pull请求验证建议更改的过程。Jenkins X将自动配置源代码存储库,Jenkins和Kubernetes以提供开箱即用的持续集成。

实施持续交付

Jenkins X认为CD是在合并到主分支之后,通过在实时环境中运行来采取更改的过程。Jenkins X在发布管道中自动化许多部分:

Jenkins X提倡使用语义版本控制。我们使用git标签来计算下一个版本,这意味着我们不需要在主分支中存储最新版本。

在发布系统将最后一个版本或下一个版本存储在Git repos中的情况下,这意味着CD变得很难,因为发布管道中的提交返回到master将会触发新版本。这会导致递归释放触发器。使用Git标签有助于避免这种情形,这也是Jenkins X可以完全自动化实现的情况。

Jenkins X将自动在每个合并之间创建一个已发布的版本,然后可能会进入生产阶段。

使用松耦合架构

通过针对Jenkins X的Kubernetes用户,我们可以利用许多有助于设计和开发松散耦合解决方案的云功能。这里仅列举Kubernetes帮助的几个示例:服务发现、容错、可扩展性、运行状况检查、滚动升级、容器调度和编排。

授权团队的缔造者

Jenkins X旨在帮助多语言应用程序开发人员。现在,Jenkins X拥有快速入门和自动化的CI / CD设置,可以对Golang、Java、NodeJS、.Net、React、Angular、Rust、Swift等语言进行检测。这也是提供一致的工作方式,因此开发人员可以专注于开发。

Jenkins X还提供了许多插件,例如Grafana和Prometheus,用于自动化指标收集和可视化。在此示例中,集中度量标准有助于了解在Kubernetes上构建和部署应用程序时的行为方式。

DevPods是另一个功能,它使开发人员能够在其本地IDE中编辑源代码,然后在将其同步到云并快速构建和重新部署。

Jenkins X认为,为开发人员提供自动化帮助他们在云中进行实验,使用不同的技术和反馈使他们能够更快地做出最佳决策。

想要仔细看看?

我自己、James Strachan 和 Rob Davies 将在 DevOps World | Jenkins World上展示和举办研讨会。我们也会在Jenkins X演示区闲逛,所以来打招呼,看看Jenkins X最新的酷炫和出色的东西。使用JWFOSS可以享受30%的折扣优惠

想参与其中吗?

Jenkins X是开源的,社区主要在Jenkins X Kubernetes slack channels,有关更多了解Jenkins X建议,请查看我们的参考文档。我们一直在帮助很多人进入开源,学习新的技术和语言,如 Golang。为什么不加入呢?

演示

如果您还没有明白它,那么这个视频会介绍,带有自动CI / CD流水线和预览环境的spring boot 快速入门。

https://youtu.be/kPes3rvT1UM

不过瘾,去看看Jenkins Ambassador 石雪峰老师的精彩文章:X 战警降临,Jenkins X 正式发布

石雪峰老师的演示视频

 http://www.gaowei.vip/cv-213831.html


欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
178°|1781 人阅读|0 条评论

登录 后发表评论