思路


1、使用jenkins+gitlab,实现git仓库有push时,立即触发jenkins的job,进行构建。

 

2、jenkins和gitlab的安装配置直接参考官方文档

 

3、以下文档仅是抛砖引玉,介绍将jenkins和gitlab打通。

 

 

==========================

GitLab


1、Profile->Access Token-:生成token,用于(Jenkins系统设置->系统设置->Gitlab 设置中的Credentials

2、创建新的仓库,打开该仓库页,设置->Webhooks:url中填写jenkins中的对应的job的地址,并添加参数

      如:http://uasername:password@ip:port/job/222/build?delay=0sec

3、【Add Webhook】保存

4、点击【Test】,提示 “Hook executed successfully: HTTP 201”,且Jenkins中对应的job立即执行构建,在Build History可见。

5、jenkins+gitlab已打通,基础配置完成,在仓库中push后,对应的job可以立即执行构建

6、这仅是jenkins+gitlab的冰山一角,后面的打包、测试、发布、备份等等都能做。

 

 

==========================

Jenkins

 

1、系统设置->管理插件:gitplugin,gitlab plugin,gitlab hook plugin

2、系统设置->Configure Global Security:

jenkins+gitlab自动化发布架构图 gitlab jenkins结合_git

 

3、系统设置->系统设置->Gitlab:

   

 

jenkins+gitlab自动化发布架构图 gitlab jenkins结合_git_02

 

4、创建job:

 

(可不添加该步骤)a、源码管理:Git

  Repository URL,仓库地址。如:http://172.168.100.155:9001/root/222.git

       Credentials,添加用户名、密码:使用gitlab的账号密码

 保存

 

b、构建触发器:Build when a change is pushed to GitLab. GitLab CI Service URL: http://172.168.100.155:8080/project/222

   使用默认

 

c、保存job,并尝试手动构建,检查结果。

 

 

 

==========================

遇到的问题

 

==Gitlab

 

问题:gitlab web打开后502

解决:修改端口号

 

#log

tail -f /var/log/gitlab/unicorn/unicorn_stderr.log

 

#修改gitlab端口号

sudo vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb

 

#修改gitlab url

sudo vim /etc/gitlab/gitlab.rb

 

#重载配置

sudo gitlab-ctl reconfigure

 

 

 

==jenkins

#问题:修改用户权限后无法登录

解决:删除config.xml中部分内容,重启jenkins

 

$ cd /var/lib/jenkins,修改config.xml,删除<useSecurity>true</useSecurity>以下,ADN <securityRealm class="hudson.security.LegacySecurityRealm"/>以上的内容。

 

充启jenkins

$ cd /etc/init.d

$ sudo ./jenkins restart

 

 

 

#问题:gitlab中webhooks添加的url在执行配置test时,报错401、403

解决:webhooks的rul中拼接参数,如 http://username:password@172.168.100.155:8080/job/222/build?delay=0sec

 

 

#问题:gitlab的仓库中设置webhooks时,运行test报错No valid crumb was included in the request

解决:在jenkins全局安全设置中取消勾选“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”

 

 

[完]