在大型项目开发过程中,开发人员频繁提交新代码,然后在项目生命周期结束时将其集成到代码仓库。在集成的时候往往会需要消耗大量的时间去解决构建编译等问题。如何配置 Jenkins 与版本控制系统 Gitlab 集成实现自动化提交构建? 并优化(分支名称自动替换、增加构建描述信息、变更 commit 状态、构建失败邮件通知、过滤特殊push请求。
在本场 Chat 中,会讲到如下内容:
- 配置提交流水线
- 提交流水线优化
- 合并流水线
适合人群: 对 DevOps 感兴趣的所有同学。
目录内容- 提交流水线
- 配置 jenkins
- 配置 gitlab
- 提交流水线优化
- 分支名称自动替换
- 增加构建描述信息
- 变更 commit 状态
- 构建失败邮件通知
- 过滤特殊 push 请求
- 合并流水线
当 Gitlab 中触发 push 操作,则触发相对应的 Jenkins 流水线构建。实现快速反馈与验证。
- 方式 1: 使用 Gitlab CI,当有 push 请求,在 CI 脚本中远程触发 Jenkins 项目构建。
- 需要准备 Gitlab runner
- 编写触发 Jenkins 脚本
- 方式 2: 使用 Gitlab WebHook,当有 push 请求,直接触发 jenkins 项目构建。【采用】
- 需要配置 Gitlab webHook
- 需要配置 Jenkins 项目 Hook
首先我们准备一个能够构建成功的流水线项目(暂且不设置复杂的步骤,helloworld 即可)
编辑项目配置: 我们要使用Generic Webhook Trigger
触发器,需要安装插件。这触发器非常灵活,推荐使用。
开启Generic Webhook Trigger
触发器,添加一个请求参数 runOpts Request parameters
。我们定义这个参数是为了对构建做个标识。辨别手动触发构建与提交构建。配置一个token
默认我使用的是项目的名称,必须唯一,否则在配置了相同的 token 的项目都会被触发。Print post content
用于展示请求日志,Print contributed variables
展示我们在 post 中获取的变量内容。
配置完成后: 我们生成一个触发 URL
http://JENKINS_URL/generic-webhook-trigger/invoke?token=demo-maven-service_PUSH&runOpts=GitlabCI
我们找到要配置提交触发构建的项目,设置->集成,勾选Push Events
配置完成,这时候我们进行提交代码,会发现已经能够正常触发项目构建了。如果出现了问题,我们重点检查 jenkins 的项目触发 URL 和网络权限问题。
提交流水线优化 分支名称自动替换当我们在任意分支提交的时候,Jenkins 需要获取我们提交的分支进行构建。而不是固定的分支。
增加获取 hook