【原创】转载请标注文章地址
Jenkins上集成GitLab,当有人push code到GitLab上时,GitLab会触发Jenkins进行相应Job的构建。
1、在Jenkins上安装好GitLab Plugin和Gitlab Hook Plugin
安装插件2、在gitLab上加上ssh public key
在装Jenkins的机器上,用jenkins用户或者root用户生成ssh密钥对。如果jenkins是分master和slave的,那就在master上生成密钥对,如果jenkins是运行在docker里的,那就在docker里的jenkins master上生成密钥对。
生成密钥对:ssh-keygen -t rsa (记得先切换到相用户下root or jenkins,具体操作百度or Google很多),生成的密钥对在对用用户下的.ssh文件夹下,比如root用户,路径就是/root/.ssh
密钥对然后将文件id_rsa.pub里面的内容copy到gitLab上, gitLab-->setting-->SSH Keys
GitLab上添加公钥3、Jenkins上的配置
3.1 添加credentials
找到Source Code Management, 点击Add按钮去添加一个credentials
Add credentials只要填三个内容,
- Kind选择 SSH Username with private key
- Username自己随意填
- Private Key填步骤2中生成的私钥(文件id_rsa里的内容)
add credentials23.2 配置Job触发
在Job里的configuration里面,勾选Build when a change is pushed to GitLab. GitLab CI Service URL: http://147.128.64.212:8080/project/TEST_RC13_AA_TRIGGER,具体里面的配置都采用默认的,后面按需修改。
配置Job4、在GitLab添加Webhood
步骤3中,红框框起来的url地址copy出来,然后Paste到GitLab上的对应项目上,GitLab-->project-->NSI-Ansible-->Settings-->Integrations
配置GitLab把url复制到GitLab上,然后点击Add webhook按钮。生成webhook后点击test可以测试,返回Hook executed successfully: HTTP 200就表示成功了,同时Jenkins job也会build起来。
test webhook如果是这样基本完成了,但test的时候有可能返回的是Hook executed successfully but returned HTTP 403,这是没有权限,需要把Jenkins-->Jenkins Manages-->Configure System,找到GitLab配置,去掉勾选。
去掉勾选5、配置branch
这样子,只有有人push code到GitLab上,我Jenkins的job都会Run,但这有一个问题,这里没能区分Branch,无论提交到哪个branch的code都会触发Jenkins Job,这肯定不是我们希望的,所以还需要在Jenkins上配置。Jenkins-->Job-->configure-->Build Triggers,然后点击图中的红框,配置更多选项。
点击Advance 配置Branch然后在Allowed branches中,选择filter branches by name,在include中填写你要的branch名称,这样就可以按branch触发。当然还能看到可以用正则来匹配branch,按需求来就好。
6、提高点
插件是没有提供按文件路径来触发的功能的,比如一个大project,有业务代码,也有test代码,当业务代码更新时触发build业务包的job,当test代码更新时,build FT job,这可以通过写groovy脚本来实现,大家可以去尝试。
以上有什么问题可以留言给我。
By Yang Yongjie
【原创】转载请标注文章地址:http://www.jianshu.com/p/156de44a44c2
网友评论