gitlab+jenkins服务简述:
Gitlab是一个利用ruby on rails开发的开源应用程序,实现一个自托管的git项目仓库,可通过web既然面进行访问公开的或者私人项目。
Gitlab拥有与github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。还提供一个代码段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
环境准备:
Gitlab:192.168.11.139
Jenkins:192.168.11.140
Jenkins上的操作:
开始安装插件
直接在页面进行搜索就可以:
ssh #执行远程脚本
Gitlab #继承gitlab使用
Build Authorization Token Root #构建授权token
Gitlab hook #钩子插件
如果找不到,可以去官网进行下载:Jenkins Plugins
在jenkins服务器上通过命令方式生成密钥对,这样jenkins和gitlab就通过密钥进行验证
[root@jenkins ~]# ssh-keygen -t rsa
一路回车 会生成/root/.ssh/目录,其中包含id_rsa,id_rsa.pub两个文件。其中带有.pub的表示公钥文件
[root@jenkins ~]# ll /root/.ssh/
total 12
-rw-------. 1 root root 2602 Jan 28 03:54 id_rsa
-rw-r--r--. 1 root root 572 Jan 28 03:54 id_rsa.pub
把私钥文件id_rsa文件的内容拷贝到jenkins上
[root@jenkins ~]# cat /root/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEApr07tNldb5Mj5fRX5JtWByAxE4ZOU693TjmoYCueTiSGj840DbGH
bMQ/ndg/OlU20ZspezdwA0GYXzCh4IRKKTzo6iTk2gmikHoKflNIAz6h5LZ+h16GNTQ6Qm
mRgIW+pWYYTqYS9xTMES7JTrOQNxIsDmMEc+Hv+TXqyba5X8+LZQTX/GszEmJRic76DC+K
Of6sC0IWAPmtCYPXlbUYx6Uh3Is8sm...
在浏览器中打开jenkins,进入到系统管理----凭据----系统-----全局凭据中添加凭证
把公钥文件id_rsa.pub复制到gitlab上面,查看公钥文件和上面查看私钥是一样的命令
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCmvTu02V1vkyPl9Ffkm1YHIDEThk5Tr3dOOahgK55OJIaPzjQNsYdsxD+d2D86VTbRmyl7N3ADQZhfMKHghEopPOjqJOTaCaKQegp+U0gDPqHktn6HXoY1NDpCaZGAhb6lZhhOphL3FMwRLslOs5A3EiwOYwRz4e/5NerJtrlfz4tlBNf8azMSYlGJzvoML4o5/qwLQhYA+a0Jg9eVtRjHpSHcizyyYK2YGC3Nob9Gr7ap/zz1tC4DDq/vGi2AYu0/ug6wf78k8PD9oJWr9CDUTC09ThePFAx+brTFLu1wq33826UEklGgWihSc0+2/q0UGL8/vrwxWmMMdfs3lEsotx+KSjmuMyS8Ct1DgVhmFKH0UnFbnWAtIzPNVhGVme//QPMdP9U4CiIMgZI46fncZz0cX0SzdKrZWImuI33z4ReLNnuGB0sb1lAZ4vAh8U1h61n9lJQqsEm2N3Yx6zF/louo91eSyCXrlS1x3BOMFyKQ8NvVUkywyonQuwzWub8= [email protected]
到gitlab上面,点击设置
找到左侧导航栏的ssh keys选项,填写相应的内容
首先在gitlab上准备好一个仓库,自己创建的也行,由本地push上去的也可以
创建好之后,把对应的仓库的名字复制上,一会会用到(接下来跳到底色为黄色部分内容)
此版本是的gitlab设置中的 webhook在url中填写jenkins的URL,token是在Jenkins时生成的。取消ssl加密
在构建触发器里 |
创建好之后,点击下方的test----push event,会在界面上方显示“Hook executed successfully:HTTP 200”
登录到jenkins界面,查看该任务是否被远程触发
Jenkins出现构建说明webhook生效,并且构建是gitlab的管理员构建的。如果出现404、401等报错请看报错解决。(我在这里遇到不允许像本地网络发送webhook的请求,是因为gitlab在10.6版本之后为了安全出现的,可以通过设置--网络--外发请求进行更改)
接下来:在jenkins上操作
项目的名字最好和gitlab中项目名字一致,至于项目什么类型,这个看个人需求。
创建完成之后,找到源码管理,选择git,选择要关联的gitlab仓库以及对应的验证
Git: 支持主流的github 和gitlab代码仓库。因我们的研发团队使用的是gitlab,所以下面我只会对该项进行介绍。
Repository URL:仓库地址
Credentials:凭证。可以使用HTTP方式的用户名密码,也可以是RSA文件。 但要通过后面的"ADD"按钮添加凭证。
Branches to build:构建的分支。*/master表示master分支,也可以设置为其他分支。
源码浏览器:你所使用的代码仓库管理工具,如github, gitlab.
URL:填入上方的仓库地址即可
点击下面的高级选项,生成一个token,在gitlab中将会用到
在构建触发器的窗口中,选择适合你自己业务的条件,这里我选择的是当gitlab有提交时可以触发(返回到gitlab上)
还有一些其他选项根据意思自己去选择,配置好了之后,可任意重新启动(不重启也可以)。然后在linux中上传我呢见到gitlab,就可以自动构建jenkins项目了
[root@liu-node3 test-test]# git clone [email protected]:root/test-test.git
Cloning into 'test-test'...
warning: You appear to have cloned an empty repository.
[root@liu-node3 test-test]# echo "hello everyone" > ont
[root@liu-node3 test-test]# git add ont
[root@liu-node3 test-test]# git commit -m "first"
[master (root-commit) a2626cc] first
1 file changed, 1 insertion(+)
create mode 100644 ont
[root@liu-node3 test-test]# git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 209 bytes | 209.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To gitlab.example.com:root/test-test.git
* [new branch] master -> master
测试