使用无服务器式的 Jenkins X:探索Prow,Jenkins X Pipeline Operator和Tekton

2019 年 4 月 25 日 DevOps时代

校对 | 卢迪

翻译 | 致Great

Jenkins X的无服务器风格,或者有人称之为Jenkins X Next Generation,试图重新定义我们如何在Kubernetes集群中进行持续交付和GitOps。

它通过将相当多的工具组合成一个易于使用的捆绑包来实现这一点。绝大多数使用者,无需理解相关组件独立运行的复杂性,也无需理解它们是如何集成的。只需将版本迭代推向Git,其余工作都会由系统自动完成。

为了一窥究竟,接下来就让我们一同探索,无服务器Jenkins X平台中涉及的流程和组件。通过理解一项任务从Git webhook起始的流动,将会帮助我们对其工作原理有更加深入的理解。同时,也会在我们接下来深入介绍各个全新组件时,提供帮助。

以下的描述,并非对所有使用者都是必需的。如果你选择跳过,并选择在不清楚其内部工作原理的情况下使用无服务器的Jenkins X,我们也认为很好。毕竟,Jenkins X的主要目标就是抽象细节,让人们练习持续交付,而不用花费数月时间来学习诸如Kubernetes和Jenkins X等复杂系统。

就像静态Jenkins一样,一切都起始于向Git库的一次push操作。随后,一个webhook请求被发送至集群中。不同的是,并没有用来接收这些请求的Jenkins。相反,我们有Prow。它会做很多事情,但在webhook这个场景下,它的工作是接收请求并决定下一步该做什么。这些请求不仅限于push操作,还包含了我们可以通过pull request评论指定的斜杠命令(例如/approve)。

Prow由几个不同的组件组成(例如,Deck,Hook,Crier,Tide等等)。然而,我们并不会深入介绍各个组件的职责。此刻,最需要留意的重要事项是Prow是群集的入口。它接收所有的Git请求,包含产生于Git动作的(例如push)与产生于评论中斜杠命令的。

Prow在收到请求后可能会做很多事情。如果它来自Git注释中的命令,它可能会重新运行测试,合并拉取请求,分配人员或许多其他Git相关操作之一。如果webhook通知它已经进行了新的推送,它将向Jenkins X Pipeline Operator发送一个请求,该请求将确保运行与定义的管道相对应的构建。最后,Prow还向Git报告了构建的状态。

这些特征并不是Prow可能执行的唯一动作类型,但是现在,你可能得到了一般的Gist。Prow负责Git与集群内部流程之间的通信。

当Prow Hook收到来自Git webhook的请求时,它会将其转发给Jenkins X Pipeline Operator。Operator的职责是从库中取回用于初始化流程的jenkins-x.yml文件,并将其转换为Tekton Tasks和Pipelines。反过来,它们定义了将变更push到Git后,应该被执行的完整流水线。

Pipeline Operator存在的原因是为了简化我们持续交付流程的定义。Tekton完成了繁重的工作,但这是一个非常低级的解决方案。它不应该直接使用。编写Tekton定义可能非常痛苦和复杂。Pipeline Operator通过易于学习和使用YAML格式来定义管道简化了这一过程。

Tekton为每次推送创建一个PipelineRun,每次推送都发送到一个相关的分支(例如,master分支,PR等),同时执行验证推送所需的所有步骤。Tekton运行测试,在注册表中存储二进制文件(例如,Docker Registry,Nexus和ChartMuseum),并将发布部署到临时(PR)或永久(临时或生产)环境。

完整的流程如下图所示:

正如上面已经提到的,并非每个人都需要了解事件的流程,也不需要深入了解流程中涉及的所有组件。对于大多数用户来说,唯一需要理解的是,将更改推送到Git将导致执行jenkins-x.yml管道中定义的构建。这就是Jenkins X的美丽。它通过简化复杂的过程简化了我们的生活。

本文节选自《DevOps 2.6工具包:Jenkins X》一书。

原文链接:https://technologyconversations.com/2019/04/15/going-serverless-with-jenkins-x-exploring-prow-jenkins-x-pipeline-operator-and-tekton/

Jenkins Area Meetup 2019 北京首站

时间:2019年5月18日 | 地点:北京朝阳区北苑路甲13号苑1号楼,北辰泰岳大厦

2019 年 Jenkins 爱好者的首次线下聚会,点击阅读原文,了解更多详情。

更多精彩,请点击阅读原文

登录查看更多
5

相关内容

Git 是一个为了更好地管理 Linux 内核开发而创立的分布式版本控制和软件配置管理软件。 国内外知名 Git 代码托管网站有: GitHub.com Coding.net code.csdn.net ...
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
用 GitLab 的 Merge Request 做代码评审
DevOps时代
4+阅读 · 2019年5月5日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
Ceph的正确玩法之SSD作为HDD的缓存池
炼数成金订阅号
5+阅读 · 2019年2月14日
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
Arxiv
14+阅读 · 2020年1月27日
Arxiv
26+阅读 · 2018年9月21日
Arxiv
3+阅读 · 2018年3月5日
Arxiv
12+阅读 · 2018年1月20日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
用 GitLab 的 Merge Request 做代码评审
DevOps时代
4+阅读 · 2019年5月5日
VS Code Remote发布!真·远程开发
开源中国
6+阅读 · 2019年5月3日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
Ceph的正确玩法之SSD作为HDD的缓存池
炼数成金订阅号
5+阅读 · 2019年2月14日
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
Top
微信扫码咨询专知VIP会员