简介
Jenkins最初被称为Hudson,是由Kohsuke Kawaguchi编写的一个Java开源项目(部署和运行需要安装Java 8以上环境)。作为一个CI持续集成服务器,Jenkins可以从版本控制系统(VCS)自动拉取最新的代码,构建和进行测试,并将过程信息通知到开发人员。但实际上,Jenkins所提供的CI管道并不限于单一版本的实现。多分支管道可以让用户利用Jenkinsfile,在SCM源码库中,自动为每个代码分支创建一个独立管道。
Jenkinsfile是什么?
Jenkins的CI管道支持采用Jenkinsfile的文本文件定义,Jenkinsfile文件的内容是采用DSL(特定于域语言)编写的。用户可以将管道内所需运行的步骤写到文件内,最终以内容即代码的方式部署管道。
Jenkins的多分支管道定义
多分支管道让用户能够为同一项目的不同分支定义不同的Jenkinsfile。在一个多分支管道项目中,Jenkins能够自动发现、管理和执行包含源码级控制的分支管道。
架构图
创建一个简单多分支管道项目的步骤
1、在Jenkins的左上角点击“New Item”;
仪表板-New Item按钮
2、在“ Enter an item name field”字段中输入项目名称,向下滚动,然后选择“Multibranch Pipeline”并单击“OK”按钮;
多分支管道
3、加上描述(可选项);
4、填上代码分支源码库的类型(例如GitHub)并填入源码库的URL地址;
5、选择“Add”按钮添加凭证,并选中Jenkins;
6、录入 GitHub 用户名、密码、ID和描述;
7、在凭证栏选择下拉按钮,添加访问凭证;
分支源码库
8、点击“Save”按钮,保持这个多分支项目;
9、Jenkins将自动扫描指定的源码库,并为组织文件夹建立索引。组织文件夹意味着让Jenkins可以监视整个GitHub组织或Bitbucket团队及项目,并为包含分支的源码库自动创建新的多分支管道,并弹出拉取Jenkinsfile的请求。
扫描源码库的日志
10、目前Jenkins的自动扫描源码库功能只支持GitHub[1]和Bitbucket[2]类型的源码库,功能是由GitHub的组织文件夹和Bitbucket代码分支插件实现的;
11、作业一旦创建,就会自动生成触发器。
生成触发器
配置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“;
添加 webhook
23、点击“Add Webhook”按钮。这动作将为源码库添加所配置的webhook。
24、一旦正确地添加了webhook,你就可以看到带勾的webhook;
添加 webhook
25、回到源码库,修改分支内容或更新任意文件。在本案例中,我们更新了README.md文件;
26、随后,将看到自动触发的Jenkins任务;
CI任务触发
27、等待管道执行完毕,可在“Build History”中,通过构建流水号查看构建执行的历史记录;
28、单击“build number”并选择“Console Output”。就可以看到每个CI步骤的输出。
Console Output
相关链接:
https://plugins.jenkins.io/github-organization-folder
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的配置管理等等,点击下方图片或者阅读原文链接查看详情。