Jenkins和Gitlab集成主要目的是将Jenkins作为Gitlab持续集成工具,版本库有提交或者合并时能够触发Jenkins自动build
Jenkins集成Gitlab是用过gitlab-plugin来实现,因此对jenkins和gitlab有版本要求
jenkins > 1.568
gitlab 7.14.x 或者 8.1.x,不支持8.0.x
插件为jekins提供了gitlab-webhook以及gitlab-ci相应的功能,相关的接口如下:
/project/PROJECT_NAME/builds/COMMIT_SHA1/status.json 返回COMMIT_SHA1版本号对应的build状态,在gitlab merge/request页面显示
/project/PROJECT_NAME/builds/status.png?ref=BRANCH_NAME 显示分支build状态的图标,"sucess", "pending", "failed"
/project/PROJECT_NAME/builds/status.png?sha1=COMMIT_SHA1 返回COMMIT_SHA1的build状态图标
/project/PROJECT_NAME/builds/COMMIT_SHA1 跳转到对应COMMIT_SHA1版本的build状态页面,
/project/PROJECT_NAME/commits/COMMIT_SHA1 跳转到对应COMMIT_SHA1版本的build状态页面,
/project/PROJECT_NAME?ref=BRANCH_NAME 跳转到对应BRANCH_NAME版本的build状态页面,
/project/PROJECT_NAME 触发jenkins自动build的接口,要传递必要的参数
插件内置build参数, 可以在初始化构建参数时添加:
gitlabSourceBranch merge/request的源分支
gitlabTargetBranch merge/request的目标分支
gitlabSourceRepoURL
gitlabSourceRepoName
gitlabMergeRequestTitle
gitlabMergeRequestId
gitlabMergeRequestAssignee
gitlabUserName
gitlabUserEmail
gitlabBranch Gitlab push代码的分支可以用于shell script
gitlabActionType Gitlab操作类型PUSH或MERGE可以用于shell script
以上参数在gitlab 触发webhooks的时候会传递过来,同时我们也可以在构建jekins任务时设置默认值
基本设置
1.升级jenkins, 目前使用的1.47版本会遇到克隆版本会报错,升级到最新1.643可以配置成功
2.安装gitlab-plugin插件,同时会一同安装插件依赖git-client和git
3.为jenkins生成一个能访问gitlab的ssh密钥对,切换到jenkins用户将密钥对至于.ssh目录,其中公钥将用于gitlab设置deploy key
添加构建项目
4.添加构建项目(构建一个自由风格的软件项目), 设置项目名
5.在源码管理部分:
选择git
Repository URL设置gitlab项目地址,如:git@your.gitlab.server:group/repo_name.git
高级设置, Name设置为origin
Branch Specifier: origin/${gitlabSourceBranch}
源码库浏览器:gitlab
URL: http://your.gitlab.server
Version: gitlab版本号,如:1.11.0
Additional Behaviours:
点击'Add', 选择‘Merge before build’
Name of the repository:origin
Branch to merge to: ${gitlabTargetBranch}
构建触发器:
勾选'Build when a change is pushed to GitLab'
保存设置
6.设置gitlab回调接口,用于在build完成将结果通知到gitlab
进入全局系统管理
Gitlab部分
Gitlab host URL: http://your.gitlab.server
API Token: 设置gitlab的api访问token(admin用户才有)
Gitlab相对于jenkins配置要简单很多,主要是为jenkins要访问的项目配置gitlab-ci以及webhook
1.设置项目deploy key, 将jenkins用户目录下面的公钥设置在这里即可
2.设置gitlab ci
在项目设置里,点击'Services'
点击'GitLab CI', 勾选'Active'
Trigger栏,勾选'Push events'和'Tag push events'
Token, 随便填写一个字符串
Project url:填写jenkins api地址,http://JENKINS_URL/project/PROJECT_NAME
3.设置gitlab webhook
点击'Web hooks', 输入地址:http://JENKINS_URL/project/PROJECT_NAME
然后勾选'Merge Request event'
注意,gitlab ci和webhook都要设置才行
以上设置完成之后,往gitlab里push代码或者建立Merge Request就会自动build相应的jekins任务了