我们很高兴能分享并邀请社区成员加入我们在过去几个月里一直在思考的一个项目必威国际有限公司詹金斯X它扩展了Jenkins生态系统,以解必威国际有限公司决云中的CI/CD自动化问题。

背景

在过去的几年里,软件行业发生了巨大的变化:

  • 使用不可变的容器映像来分发更小、更容易使用的软件,从而比单独使用VMs带来更低的基础设施成本(平均减少20%)

  • Kubernetes已经成为在任何公共云或混合云上大规模安装、升级、操作和管理容器的实际方式了吗

    • 2018年是所有主流公共云、操作系统供应商和PaaS产品支持的一年Kubernetes本机

    • 我们现在有了一个开源的行业标准,可以在任何云上分发、安装和管理应用程序!

  • 微服务和云本地应用程序的采用增加,导致需要CI/CD的组件数量大幅增加,发布频率也在增加

  • 社区对DevOps实践的改进,比如DevOps状态报告哪一个展示了高效团队的方法

    • 越来越多的企业现在意识到,为了竞争,你必须通过软件快速交付价值

    • 如果业务想要成功,团队需要变得高效

所有这些都增加了团队对云本地CI/CD解决方案的需求,需要大量的自动化!

引入詹金斯X必威国际有限公司

必威国际有限公司詹金斯X标志必威国际有限公司詹金斯X是一个重新思考开发人员应该如何与云中的CI/CD交互的项目,重点是通过自动化、工具和DevOps最佳实践来提高开发团队的生产力。

必威国际有限公司詹金斯X是开源的,我们邀请您给我们反馈,并为这个项目做出贡献。

有什么大不了的?

多年来,Jenkins已经能够必威国际有限公司在CI/CD领域做几乎任何事情;挑战一直是弄清楚如何让正确的插件,配置和代码一起工作在你的必威国际有限公司Jenkinsfile

对我来说,Jenkins X最重要的是作为一个开发人必威国际有限公司员,你可以输入一个命令jx创建jx进口通过GitOps,在每次Pull Request或git push中获得您的源代码、git存储库和应用程序,并自动构建和部署到Kubernetes,使用完整的CI/CD完成环境和推广!

开发人员和团队不需要花时间弄清楚如何将软件打包成docker映像,创建Kubernetes YAML来在Kubernetes上运行他们的应用程序,创建预览环境,甚至不需要学习如何使用声明式的管道即代码实现CI/CD管道必威国际有限公司Jenkinsfiles.这一切都是自动为您打开的盒子!所以你可以专注于传递价值!

同时,詹金斯·X也没有隐瞒任何事情。必威国际有限公司如果你真想黑进Dockerfile必威国际有限公司Jenkinsfile或者你的应用程序或他们的环境的Helm图表,然后继续-这些都可以在git中得到版本,其余的源代码都有完整的CI/CD。GitOps增值!

必威国际有限公司Jenkins X为您自动化CI/CD和DevOps最佳实践-因此您可以成为一个更快的执行团队!让你的管家多给你做点事吧!

演示

这是一个詹金斯X演示必威国际有限公司运行在GKE:


你可以看看更多的演示

必威国际有限公司詹金斯X特性

现在让我们来看看我们在演示中展示的Jenkins X的特性:必威国际有限公司

自动化的CI / CD管道

创建新的Spring Boot项目新的快速入门导入现有源代码快速进入Jenkins X必威国际有限公司通过Jx命令行工具和:

  • 为您自动设置一个实现最佳实践CI/CD特性的管道:

    • 创建一个必威国际有限公司Jenkinsfile用于通过声明式管道即代码定义CI/CD管道

    • 创建一个Dockerfile将应用程序打包为不可变容器映像(用于生成图像的应用程序)

    • 创建一个执掌图表用于部署和运行应用程序Kubernetes

  • 确保你的代码在git仓库中(例如GitHub),并使用必要的webhooks在push事件时触发Jenkins CI/CD管道必威国际有限公司

  • 触发第一个发布管道以向团队推广应用程序暂存环境

然后对每个Pull Request:

  • 将触发CI管道来构建应用程序并运行所有测试,以确保主分支处于准备发布状态

  • 你的Pull Request被部署到一个预览环境中(后面会有详细介绍)

当一个Pull Request被合并到主分支时,Release管道被触发以创建一个新的Release:

  • 生成一个新的语义版本号

  • 为新版本修改了源代码(例如:pom.xml文件得到他们<版本>元素修改),然后在git中进行标记

  • 发布的新版本工件包括:

    • Docker映像、舵图和任何特定于语言的工件(例如。pom.xml和Java的jar文件,node的npm包或go的二进制包等)

  • 新版本升级为环境(稍后再详细介绍)

通过GitOps促进环境

在Je必威国际有限公司nkins X中,每个团队都有自己的团队环境.默认环境是暂存生产但是,团队可以创造任意多的环境,并随心所欲地称呼它们。

一个Environment是部署代码的地方,每个Environment映射到一个单独的地方名称空间在Kubernetes所以它们彼此隔离,可以独立管理。

我们用一种叫做GitOps管理环境和执行促销活动.这意味着:

  • 每个环境都有自己的git存储库,用于存储所有特定于环境的配置,以及所有应用程序及其版本和配置的列表。

  • 在环境中推广新版本的应用程序,结果如下:

    • 为在环境上触发CI管道测试以及代码审查和批准的配置更改创建一个Pull Request

    • 一旦Pull Request被合并,该环境的发布管道就会通过应用来自git仓库的helm chart元数据来更新在该环境中运行的应用程序。

环境可以配置为提升自动作为发布管道的一部分,或者他们可以使用手册推广。

今天的违约是暂存环境使用自动提升;所以所有到master的合并都自动提升到Staging。然后生产环境配置为使用手动促销;所以你选择什么时候做推广。

但是,很容易更改需要多少环境的配置以及如何通过jx创建环境jx编辑环境命令

预览环境

必威国际有限公司Jenkins X让你创造预览环境把请求。通常情况下,当Pull Request被提交时,这将在Pull Request管道中自动发生,但你也可以通过jx预览命令。

创建预览环境时会发生以下情况:

  • 一个新的环境预览是与kubernetes名称空间这显示了jx得到环境命令连同Jx环境和Jx命名空间命令因此,您可以看到哪些预览环境是活动的,并切换到它们进行查看

  • Pull Request被构建为一个预览docker图像和图表,并部署到预览环境中

  • 在Pull Request中添加一个注释,通过打开应用的链接让团队知道预览应用已经准备好测试了。因此,只需点击一下,您的团队成员就可以尝试预览!

问题的评论

如果你正在开发web应用程序或REST端点,这将特别有用;它可以让您的团队与正在运行的Pull Request进行交互,以帮助人们批准更改。

反馈

如果提交注释引用问题(例如通过文本修复# 123),然后Jen必威国际有限公司kins X管道将生成类似的发布说明jx释放

同样,与这些新提交相关联的版本被提升到暂存生产,你会得到关于每个已修复问题的自动评论,该问题现在可以在相应的环境中查看,以及一个到发布说明的链接和在该环境中运行的应用程序的链接。如。

问题的评论

开始

希望你们现在想给Jenkins X一个机会。必威国际有限公司Jenkins最大的特点之一就是它非常容易上手:安装Jav必威国际有限公司a,下载war并运行java jar j必威国际有限公司enkins.war

对于Jen必威国际有限公司kins X,我们尝试着遵循类似的简单体验。一个复杂的问题是,Jenkins X比一个JVM有必威国际有限公司更多的活动部件;它还需要一个Kubernetes集群:)

首先你需要下载并安装jx命令行工具所以这是你的路径

然后你需要运行一个命令创建一个新的Kubernetes集群并安装Jenkins X必威国际有限公司(在本例中,在GKE上)。

创建集群gke

今天,我们支持创建Kubernetes集群,并在Amazon (AWS)、谷歌(GKE)、Microsoft Azure上必威国际有限公司安装Jenkins X,甚至在本地使用minikube。我们计划很快支持AWS EKS。

在撰写本文时,最容易入门的云是谷歌的GKE,所以我们建议您从那里开始,除非您已经使用AWS或Azure。Amazon和Microsoft正在努力使Kubernetes集群像在GKE上一样易于创建和管理。

所有公共云都有一个免费层,所以你应该能够启动一个Kubernetes集群,安装几个小时的Jenkins X,然后拆除它,它应该比一杯咖啡更便宜(可能是免费的!)必威国际有限公司只要记住,当您完成时要关闭集群!


如果你真的不想使用公有云,你也可以在现有的kube必威国际有限公司rnetes集群上安装Jenkins X(如果它启用了RBAC !)或者,如果可以的话安装并运行minikube,那么你应该能够也在上面安装Je必威国际有限公司nkins X

詹金斯和詹金斯X的关系必威国际有限公司

必威国际有限公司Jenkins是Jenkins X的核心CI/CD引擎,所以Jenkins X是建立在Jenkins及其强大社区的基础上。

我们是把Jenkins X必威国际有限公司作为子项目因为Jenkins X必威国际有限公司有不同的关注点:使用Jenkins和Kubernetes、Helm、Git、Nexus/Artifactory等开源工具自动化云计算的CI/CD。

随着时间的推移,我们希望Jenkins X能够帮必威国际有限公司助推动Jenkins本身的一些变化,使其更加本地化,这将有利于除Jenkins X之外更广泛的Jenkins社区。

请加入我们!

所以我希望上面的内容能让你们对Jenkins X的发展方向有个大致的了解并展示出我们今天所处的位置。必威国际有限公司这个项目还很年轻,我们有很多要做的我们正在寻求更多的投入,以确定下一步的发展方向和重点。我们也在做高水平的工作路线图

为了让Jenki必威国际有限公司ns X成功,我们希望你能参与进来,试试在社区中给我们反馈!我们喜欢贡献,无论是电子邮件,聊天,问题,甚至更好的拉请求;)。

如果你想做点贡献,这里有一些想法:

  • 给我们反馈.我们可以改进什么?有什么你不喜欢的或者你觉得少了的吗?

  • 帮助完善文档所以更清楚如何开始和使用Jenkins X必威国际有限公司

  • 添加自己的快速入门这样Jenki必威国际有限公司ns X社区就可以轻松地使用快速入门来启动新项目。如果你在一个开源项目中工作,我们是否可以在Jenkins X中添加一个好的快速入门?必威国际有限公司

  • 如果你愿意的话对代码作出贡献然后尝试浏览当前的问题

    • 我们有明显的问题招聘良好的第一问题免得你到处找

    • 我们特别希望你能帮我们找到Jenkins X必威国际有限公司在Windows上运行良好或者是集成与云服务,git供应商和问题跟踪

    • 对于更长期的目标,我们已经路线图

    • 我们总是可以使用更多的测试用例并提高测试覆盖率!

为了获得更快的反馈,我们使用Jenkins X作为CI/CD平台来开发Jenkin必威国际有限公司s X本身。例如Jenkins X创必威国际有限公司建所有版本和版本说明.我们会详细讨论UpdateBot在以后的博客中你可以看到所有的自动生成pull请求在各种Jenkins X管道中必威国际有限公司UpdateBot将版本变更从上游依赖项推入下游存储库。

注意,Jenkins社区倾向必威国际有限公司于使用IRC聊天,而Kubernetes社区使用Slack,所以Jenkins X有房间IRC和slack这取决于你喜欢哪种聊天技术——因为Jenkins X社区将与Jenkins社区和各种Kubernetes社区(必威国际有限公司Kubernetes, Helm, Skaffold, Istio等)密切合作。

关于开源最有意义的事情之一就是能够向社区中的其他人学习。所以我希望即使你还不准备使用Kubernetes你一天的工作或不感兴趣的自动化持续交付,你至少会考虑看看詹金斯X,如果没有其他原因来帮助您了解更多关于这些新思想,技术和方法!必威国际有限公司

谢谢你的聆听,我很期待在社区里看到你

关于作者
詹姆斯·斯特

James是一个长期的开源贡献者,他创建了Groovy编程语言和Apache Camel集成框架。在过去的几年里,他一直在与Kubernetes合作开发CI/CD。