本文首发于: Jenkins 中文社区
原文链接 作者:Krishna Prasad Kalakodimi
译者:anxk
使用 Jenkins 实现 CI/CD 多分支流水线
基于 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 ,您便可以看到每个构建步骤的输出日志:
进一步阅读
Learn How to Set Up a CI/CD Pipeline From Scratch
API Builder: A Simple CI/CD Implementation – Part 1
原文
https://segmentfault.com/a/1190000021545756