使用 Jenkins 实现 CI/CD 多分支流水线
简介
Jenkins 是一个持续集成服务器,用于从版本控制系统(VCS)中获取最新代码,然后对其进行构建、测试并将结果通知给开发人员。除了作为一个持续集成(CI)服务器之外,Jenkins 还可以做很多其它的事情。最初它被称为 Hudson,是川口耕介(Kohsuke Kawaguchi)基于 Java 编写的一个开源项目,因此,在安装和运行 Jenkins 之前,首先需要安装 Java 8。
多分支流水线是 Jenkins 中的一种流水线类型,它允许您在 Jenkinsfile 的帮助下为源码管理(SCM)库中的每个分支自动地创建一支流水线。
什么是 Jenkinsfile
Jenkinsfile 是一个文本文件,被用来定义一个 Jenkins 流水线。在 Jenkinsfile 中可以使用领域特定语言(DSL)编写运行 Jenkins 流水线所需要的步骤,从而将流水线实现为代码。
来自 Jenkins 的定义
使用多分支流水线,您可以为同一项目的不同分支实现不同的 Jenkinsfile,Jenkins 将会自动发现、管理和执行那些分支中包含 Jenkinsfile 的流水线。
创建一个简单多分支流水线任务的步骤
- 点击 Jenkins 工作台左上角的 New Item 选项:
- 在 Enter an item name 中填入任务名,向下滚动,然后选择 Multibranch Pipeline,最后点击 OK 按钮:
填写任务描述(可选)。
添加一个分支源(例如:GitHub)并且填写代码仓库的位置。
选择 Add 按钮添加凭证并点击 Jenkins。
键入 GitHub 用户名、密码、ID 和描述。
从下拉菜单中选择凭证:
点击 Save 保存该多分支流水线任务。
Jenkins 会自动扫描指定的仓库并为 Organization 文件夹添加索引。Organization 文件夹使得 Jenkins 能够监视整个 GitHub Organization 或 Bitbucket Team/Project,并自动为包含分支的仓库创建新的多分支流水线,然后拉取包括 Jenkinsfile 在内的源码:
当前,这项功能仅适用于 GitHub 和 Bitbucket 中的仓库,分别由 GitHub Organization Folder 和 Bitbucket Branch Source 这两个插件提供。
一旦任务被成功创建,构建将会被自动触发:
配置 Webhooks
我们需要配置 Jenkins 服务器以便与我们的 GitHub 仓库通信,为此,我们要获取 Jenkins 的 Hook URL。
导航到 Manage Jenkins 页面,然后选择 Configure System。
找到 GitHub 插件配置部分,然后点击 Advanced 按钮。
选择 Specify another hook URL for GitHub configuration:
将文本框中的 URL 复制出来。
单击 Save,返回到 Jenkins 工作台。
打开浏览器,导航到 GitHub 选项卡,然后选择您的 GitHub 仓库。
单击 Settings,导航到仓库设置:
点击 Webhooks 部分。
点击 Add Webhook 按钮,然后将 Hook URL 粘贴在 Playload URL 中。
确保 Webhook 触发器已选中 Just the push event 选项。
点击击 Add webhook,就会把此 webhook 添加到您的仓库。
正确添加 Webhook 后,您将会看到带有绿勾的 Webhook:
返回到仓库,然后切换到对应分支并更新任何文件。在此,我们更新 README.md 文件。
现在将会看到 Jenkins 任务被自动触发:
流水线执行完成后,可以通过点击 Build History 下的构建号来验证执行过的构建。
点击构建号,然后选择 Console Output,您便可以看到每个构建步骤的输出日志: