一、Jenkins从Git拉取源码
实现目标
Jenkins通过流水线从Git上拉取源码到Jenkins的工作空间,用于后续的编译、打包、发布、部署。
所用工具
- git客户端
- Jenkins插件git plugin
工作原理
Jenkins的git插件封装了git客户端的操作命令(类似于研发过程中使用的git GUI工具:https://www.cnblogs.com/ups216/p/5603199.html),为流水线配置人员提供了git指令的配置界面,只需通过在“流水线语法/git”中配置获取代码的相关参数,并在Pipeline脚本中执行,即可将Git远程仓库中的代码拉取待Jenkins工作空间(不指定时,默认是Jenkins工作目录/worksapce/job名称)。
原理解说
由图中可以看出以下几点:
- git插件只是一个命令配置和解析器,负责将配置的命令转换成git客户端相关命令,实际的代码拉取工作是由git客户端完成。
- (git插件可绕过)通过sh直接调用git客户端执行命令拉取代码
- 插件提供的GUI方式配置请求参数、生成git请求并调用git客户端对远程git仓库操作,具备便捷性、易用性
- Jenkins执行命令权限问题导致必须找到git的命令目录(即使已在系统中配置了全局path)
理解配置
从工作原理章节可以看出,要拉取代码,需要做配置:
- 下载并安装git客户端【拉取代码执行员】
- 通过whereis git获取到git的安装目录并配置到Jenkins【Jenkins要找到执行员】
[root@localhost bin]# whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
[root@localhost bin]#
进入到“Jenkins/全局工具配置”中,按照该下图中配置路径(名字任意取),如/usr/bin/git
- 【Tips】未配置或者配置不正确执行时出现如下报错
Git插件配置详解
-
仓库URL地址,就是git远程仓库的地址。登录到git远程仓库(我们用的是github),根据以下步骤从第三步中拷贝出地址,格式如下:
http://xx.xx.xx.xx:xxxx/项目路径/项目名称.git
- 分支,就是项目分支,从下图中直接获取
- 凭证获取代码的登录信息,可以是用户名/密码(需具备相应权限),也可用SSH登录,如无凭证点击“添加”,进入添加界面(目前选择用户名密码方式),填写红色区域即可
以上填写完成后,点击“生成流水线脚本”,并将其拷贝到流水线中即可执行。
二、获取git分支信息
实现目标
Jenkins上构建时通过参数选择不同的分支进行构建
所用工具
- Jenkins插件:Git Parameter Plug-In
原理
不需要工具/参数,只需要插件安装即可使用
分支参数配置
- 直接在项目中配置参数:
- 用流水线语法生成:(好处是和流水线融合,具备可移植性)
然后将其放置到到流水线脚本的参数或者环境变量中
三、Git远程仓库通过webhook自动触发构建
实现目标
研发在git上提交代码后自动触发Jenkins构建
所用工具
Jenkins插件:GitLab Plugin和GitLab Hook Plugin
流程原理
配置过程
Git的AccessToken创建过程
- 创建AccessToken
- 复制token
Jenkins中创建回调URL
- gitlab配置
进入“Jenkins/系统管理/系统配置”,找到gitlab如下图配置
- Gitlab API凭证创建和使用
- 测试验证通信是否正常
点击testConnection
返回如下则正常
- 获取webhook URL地址
Git远程仓库配置webhook触发器
- 配置webhook,将上一步获取到的回调(钩子)URL按照下图配置到Git远程仓库
- 触发测试
点击下图中的test
,在当前页面最上方会显示结果,如果返回200则说明配置成功,然后去jenkins相应job查看是否执行构建。
- 问题及解决方式(403错误)
https://blog.csdn.net/qq_19674905/article/details/89139722
关于版本changelog获取,形成结果
关于版本提交信息控制触发构建模式
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。