目标
- 当一个Push动作或Merge请求发起的时候,触发一个Jenkins构建任务
- 在GitLab的 Merge Request页面、每个Commit、项目主页中看到构建状态
基础条件
- Jenkins GitLab Plugin
- Jenkins Git Plugin
- Jenkins Gitlab Hook Plugin
- Git clone 权限(Jenkins 访问 GitLab 仓库)
- GitLab API 访问权限(生成构建状态的报告)
配置GitLab用户
在GitLab中为 Jenkins 创建一个用户账号用来跟 GitLab 的API交互,且该用户的最小权限需为Developer(生成构建状态,一个成功的构建结果可以触发一个Merge请求【启用了这个功能的话】),如果需要触发 Accept Merge Request 动作,则可能需要更高的权限,如Master权限。
这里我创建用户 jenkins ,使用该用户登陆GitLab,进入Profile Settings页面,选择 Access Token 选项卡,创建一个 Token:
Token : HkwCanuD2yfSsgXQx9mx
下面我们访问Jenkins服务器,配置Token
配置 Jenkins 使用 Token
进入目录 Jenkins -> Configure -> System,找到GitLab配置
填入Connection name,Gitlab host URL,然后点击 Add,添加上个小节中生成的 API Token 认证:
配置 Jenkins 构建任务
创建一个自由风格的构建任务
新建自由风格的构建任务,在源码管理选项卡,选择Git,然后输入代码库地址:git@gitlab.demo.com:demo/Demo.git(以代码库实际地址为准),Credentials选择之前创建的SSH私钥
配置构建任务的触发器,这里,一旦GitLab项目上有Push或者Merge事件,就会自动触发Jenkins任务执行,记住这里的Service URL和Token,后面配置GtiLab仓库的时候会用到:
构建任务这里,我们使用的是Gradle构建,因此,只需选择构建类型,声明构建任务即可
配置GitLab仓库
下面回到GitLab,去Demo项目的设置页面,点击Web Hooks,添加Push事件和Merge事件的Web Hook给Jenkins的任务地址,并选择要推送的事件(http://jenkins.demo.com:8080/job/Demo/):
然后点击Test按钮进行测试,点击后,我们会发现,Demo项目的构建任务,立刻进入了Jenkins任务队列中
紧接着,构建任务开始执行