利用Jenkins部署多分支的CI/CD管道

利用Jenkins部署多分支的CI/CD管道_第1张图片

简介

Jenkins最初被称为Hudson,是由Kohsuke Kawaguchi编写的一个Java开源项目(部署和运行需要安装Java 8以上环境)。作为一个CI持续集成服务器,Jenkins可以从版本控制系统(VCS)自动拉取最新的代码,构建和进行测试,并将过程信息通知到开发人员。但实际上,Jenkins所提供的CI管道并不限于单一版本的实现。多分支管道可以让用户利用Jenkinsfile,在SCM源码库中,自动为每个代码分支创建一个独立管道。

Jenkinsfile是什么?

Jenkins的CI管道支持采用Jenkinsfile的文本文件定义,Jenkinsfile文件的内容是采用DSL(特定于域语言)编写的。用户可以将管道内所需运行的步骤写到文件内,最终以内容即代码的方式部署管道。

Jenkins的多分支管道定义

多分支管道让用户能够为同一项目的不同分支定义不同的Jenkinsfile。在一个多分支管道项目中,Jenkins能够自动发现、管理和执行包含源码级控制的分支管道。

利用Jenkins部署多分支的CI/CD管道_第2张图片

架构图

创建一个简单多分支管道项目的步骤

1、在Jenkins的左上角点击“New Item”;

利用Jenkins部署多分支的CI/CD管道_第3张图片

仪表板-New Item按钮

2、在“ Enter an item name field”字段中输入项目名称,向下滚动,然后选择“Multibranch Pipeline”并单击“OK”按钮;

利用Jenkins部署多分支的CI/CD管道_第4张图片

多分支管道

3、加上描述(可选项);

4、填上代码分支源码库的类型(例如GitHub)并填入源码库的URL地址;

5、选择“Add”按钮添加凭证,并选中Jenkins;

6、录入 GitHub 用户名、密码、ID和描述;

7、在凭证栏选择下拉按钮,添加访问凭证;

利用Jenkins部署多分支的CI/CD管道_第5张图片

分支源码库

8、点击“Save”按钮,保持这个多分支项目;

9、Jenkins将自动扫描指定的源码库,并为组织文件夹建立索引。组织文件夹意味着让Jenkins可以监视整个GitHub组织或Bitbucket团队及项目,并为包含分支的源码库自动创建新的多分支管道,并弹出拉取Jenkinsfile的请求。

利用Jenkins部署多分支的CI/CD管道_第6张图片

扫描源码库的日志

10、目前Jenkins的自动扫描源码库功能只支持GitHub[1]和Bitbucket[2]类型的源码库,功能是由GitHub的组织文件夹和Bitbucket代码分支插件实现的;

11、作业一旦创建,就会自动生成触发器。

利用Jenkins部署多分支的CI/CD管道_第7张图片

生成触发器

配置Webhook

12、为了让Jenkins服务器与GitHub保持通信,因此需要取得Jenkins服务器的URL hook挂钩;

13、前往” Manage Jenkins”,选择“Configure System”视图;

14、找到GitHub插件配置区域,选择“Advance”按钮;

15、选择“Specify another hook URL for GitHub configuration”

Webhook

16、反选并复制文本框中的内容;

17、点击“Save”,重定向到Jenkins仪表板;

18、浏览器进入GitHub页面,并选择“GitHub”库;

19、点击“Settings”按钮,导航到源码库设置;

设置页面

20、找到Webhook区域;

21、点击“Add Webhook”按钮,在“Payload URL”中,黏贴前面复制的 URL挂勾地址;

22、确保webhook触发器为选项为“Just the push event“;

利用Jenkins部署多分支的CI/CD管道_第8张图片

添加 webhook

23、点击“Add Webhook”按钮。这动作将为源码库添加所配置的webhook。

24、一旦正确地添加了webhook,你就可以看到带勾的webhook;

利用Jenkins部署多分支的CI/CD管道_第9张图片

添加 webhook

25、回到源码库,修改分支内容或更新任意文件。在本案例中,我们更新了README.md文件;

26、随后,将看到自动触发的Jenkins任务;

利用Jenkins部署多分支的CI/CD管道_第10张图片

CI任务触发

27、等待管道执行完毕,可在“Build History”中,通过构建流水号查看构建执行的历史记录;

28、单击“build number”并选择“Console Output”。就可以看到每个CI步骤的输出。

利用Jenkins部署多分支的CI/CD管道_第11张图片

Console Output

相关链接:

  1. https://plugins.jenkins.io/github-organization-folder

  2. https://plugins.jenkins.io/cloudbees-bitbucket-branch-source

原文链接:https://dzone.com/articles/implement-ci-for-multibranch-pipeline-in-jenkins

Kubernetes入门与实战培训

Kubernetes入门与实战培训将于2020年2月28日在北京开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:Docker基础、容器技术、Docker镜像、数据共享与持久化、Docker实践、Kubernetes基础、Pod基础与进阶、常用对象操作、服务发现、Helm、Kubernetes核心组件原理分析、Kubernetes服务质量保证、调度详解与应用场景、网络、基于Kubernetes的CI/CD、基于Kubernetes的配置管理等等,点击下方图片或者阅读原文链接查看详情。

你可能感兴趣的:(利用Jenkins部署多分支的CI/CD管道)