gitlab+jenkins自动化部署

gitlab+jenkins服务简述:

Gitlab是一个利用ruby on rails开发的开源应用程序,实现一个自托管的git项目仓库,可通过web既然面进行访问公开的或者私人项目。

Gitlab拥有与github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。还提供一个代码段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

环境准备:

Gitlab:192.168.11.139

Jenkins:192.168.11.140

Jenkins上的操作:

  1. 登录到jenkins,安装插件

gitlab+jenkins自动化部署_第1张图片

开始安装插件

gitlab+jenkins自动化部署_第2张图片

 

直接在页面进行搜索就可以:

ssh    #执行远程脚本

Gitlab  #继承gitlab使用

Build Authorization Token Root #构建授权token

Gitlab hook  #钩子插件

如果找不到,可以去官网进行下载:Jenkins Plugins

gitlab+jenkins自动化部署_第3张图片

gitlab+jenkins自动化部署_第4张图片gitlab+jenkins自动化部署_第5张图片

  1. 配置jenkins和gitlab密钥对(特别重要)

在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,进入到系统管理----凭据----系统-----全局凭据中添加凭证

 

gitlab+jenkins自动化部署_第6张图片

 

把公钥文件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上面,点击设置

gitlab+jenkins自动化部署_第7张图片

找到左侧导航栏的ssh keys选项,填写相应的内容

gitlab+jenkins自动化部署_第8张图片

  1. 创建一个项目gitlab和jenkins

首先在gitlab上准备好一个仓库,自己创建的也行,由本地push上去的也可以

gitlab+jenkins自动化部署_第9张图片

gitlab+jenkins自动化部署_第10张图片

gitlab+jenkins自动化部署_第11张图片

创建好之后,把对应的仓库的名字复制上,一会会用到(接下来跳到底色为黄色部分内容)

gitlab+jenkins自动化部署_第12张图片

此版本是的gitlab设置中的 webhook在url中填写jenkins的URL,token是在Jenkins时生成的。取消ssl加密

在构建触发器里

gitlab+jenkins自动化部署_第13张图片

创建好之后,点击下方的test----push event,会在界面上方显示“Hook executed successfully:HTTP 200”

gitlab+jenkins自动化部署_第14张图片

gitlab+jenkins自动化部署_第15张图片

登录到jenkins界面,查看该任务是否被远程触发

gitlab+jenkins自动化部署_第16张图片

Jenkins出现构建说明webhook生效,并且构建是gitlab的管理员构建的。如果出现404、401等报错请看报错解决。(我在这里遇到不允许像本地网络发送webhook的请求,是因为gitlab在10.6版本之后为了安全出现的,可以通过设置--网络--外发请求进行更改)

gitlab+jenkins自动化部署_第17张图片

接下来:在jenkins上操作

项目的名字最好和gitlab中项目名字一致,至于项目什么类型,这个看个人需求。

gitlab+jenkins自动化部署_第18张图片

 

创建完成之后,找到源码管理,选择git,选择要关联的gitlab仓库以及对应的验证

gitlab+jenkins自动化部署_第19张图片

Git: 支持主流的github 和gitlab代码仓库。因我们的研发团队使用的是gitlab,所以下面我只会对该项进行介绍。

Repository URL仓库地址

Credentials凭证。可以使用HTTP方式的用户名密码,也可以是RSA文件。 但要通过后面的"ADD"按钮添加凭证。

Branches to build构建的分支。*/master表示master分支,也可以设置为其他分支。

源码浏览器:你所使用的代码仓库管理工具,如github, gitlab.  

URL填入上方的仓库地址即可

点击下面的高级选项,生成一个token,在gitlab中将会用到

gitlab+jenkins自动化部署_第20张图片

在构建触发器的窗口中,选择适合你自己业务的条件,这里我选择的是当gitlab有提交时可以触发(返回到gitlab上)

gitlab+jenkins自动化部署_第21张图片

还有一些其他选项根据意思自己去选择,配置好了之后,可任意重新启动(不重启也可以)。然后在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

测试

gitlab+jenkins自动化部署_第22张图片

gitlab+jenkins自动化部署_第23张图片

 

你可能感兴趣的:(jenkins,运维,linux,gitlab)