一、Jenkins及持续集成

1)什么是Jenkins?

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1)持续的软件版本发布/测试项目;
2)监控外部调用执行的工作;

对Jenkins有兴趣的朋友可以参考Jenkins中文文档

2)什么是持续集成?

1)什么是集成?

指的是代码由编译、发布、测试、上线的一个过程!

2)什么是持续集成?

高效的、持续性质的不断迭代代码的集成工作!

3)如何高效准确的实现持续集成?

必不可少的需要一套能自动化、并且可视化的平台来帮助我们!

二、为什么Jenkins能帮助我们进行持续集成?

1)Jenkins是一个开源的、且基于JAVA代码开发的持续集成系统

因为含有非常丰富的插件支持,所以我们可以方便的打通版本库、测试构建环境、线上环境的所有环节。并且丰富友好的通知使用者和开发、管理人员。

2)安装维护简单

安装Jenkins,不太复杂。而且支持通用的平台。

3)Java应用常用

在企业的软件构建过程中,JAVA的应用工程稍显复杂,由于复杂构建和代码上线、并且服务的重启。整个过程下来,消耗的时间较多,Jenkins却能很好的集成maven的编译方式,而且利用自动化的插件和自定义开发脚本的支持。所以目前广泛的应用于JAVA工程的持续集成平台。

接下来使用的大多数软件包都是从清华大学开源镜像站中下载!

三、部署安装Gitlab

1)安装gitlab

[root@jenkins ~]# yum -y install  epel-release curl openssh-server openssh-clients postfix cronie policycoreutils-python
#安装所需依赖
[root@jenkins ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
#获取gitlabRPM包
[root@jenkins ~]# rpm -ivh gitlab-ce-12.3.5-ce.0.el7.x86_64.rpm
#安装gitlab软件包
[root@jenkins ~]# vim /etc/gitlab/gitlab.rb 
external_url 'http://192.168.1.10'
#修改为本机的IP地址,便于访问
[root@jenkins ~]# gitlab-ctl reconfigure
#重新配置gitlab,就算不修改配置文件,也需要在安装后重新配置gitlab
[root@jenkins ~]# netstat -anpt | grep -w 80   
#确定其80端口在监听

2)配置gitlab

如图:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成

3)生成密钥对,便于ssh登录

[root@jenkins ~]# ssh-keygen -t rsa -C "1454295320@qq.com"      #生成秘钥对
[root@jenkins ~]# cat ~/.ssh/id_rsa.pub          #查看公钥并复制
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuyAYPbmf92Pi6OOfcbdi7BCxN+Fq1c5lc4YAQhM8420mwfT4WltUOSXUidxR2oT3ViXSxwzlOr+XoHJ4YJEeQ3jIeXr5aSwtU5YTNgvVA+SYk0uvPLJg11NdEuMkSIB2K8PJ9zSxvppKbAkynmLEyZ1n61j5NbbApjgMslUqdB10vWowSE/Xoo11ugooQH2y3GxVrSv/EMeaVkToMVFM7BWx0pLBLi+tMJpb6Aj0pOSyv5rBj0hA1+2qrPQ3DtJc4QGMK+FRyxw/N13slfmoLzZ+6bF9oyNQZNWa9isL5C80srZhF7JkCrscYMIo0hOCkYOLVGJDFSgxiceG9ZmYh 1454295320@qq.com

接下来需在web页面进行操作。如图:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成

4)创建一个库

如图:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成

5)本地服务器进行测试

[root@jenkins ~]# git clone git@192.168.1.10:root/test01.git
#执行克隆操作,第一次根据提示输入yes即可!
[root@jenkins ~]# cd test01/
[root@jenkins test01]# ls
README.md
#进入克隆的库,查看是否与web页面创建的库的内容一致
[root@jenkins test01]# git config --global user.name admin
[root@jenkins test01]# git config --global user.email admin@admin.com
#自报家门,进行简单的声明用户名及邮箱地址
[root@jenkins test01]# echo "hello world" > 123.txt
[root@jenkins test01]# git add 123.txt 
[root@jenkins test01]# git commit -m "commit form local first"
#创建文件进行测试
[root@jenkins test01]# git push origin master
#将本地的测试文件推送到远端(gitlab)

6)gitlab验证

刷新页面之后,如图:
Jenkins+Gitlab实现持续集成

gitlab的配置到此先告一段落,接下来安装Jenkins!

四、部署安装Jenkins

1)安装Jenkins

[root@jenkins ~]# wget https://mirrors-i.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.172-1.1.noarch.rpm
#获取Jenkins软件包
[root@jenkins ~]# rpm -ivh jenkins-2.172-1.1.noarch.rpm 
#安装Jenkins
[root@jenkins ~]# rpm -ql jenkins               #查看与Jenkins相关的文件存放的位置
[root@jenkins ~]# sed -i 's/JENKINS_PORT="8080"/JENKINS_PORT="8081"/g' /etc/sysconfig/jenkins
#由于gitlab的组件已经占用了8080端口,所以需要更改监听的端口
[root@jenkins ~]# /etc/init.d/jenkins start               # 启动Jenkins服务
[root@jenkins ~]# ss -lnt | grep 8081                 #确定端口在监听
LISTEN     0      50          :::8081                    :::*  

2)Jenkins web页面的配置

如图:
Jenkins+Gitlab实现持续集成

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
c6e0fcde793648e9b4bad088e8896897
#查看密码信息,并将其复制

Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
由于下载其插件时间较长,所以采用另一种方法:
等安装完成一个插件后,将网络断开!下载所需软件

[root@jenkins ~]#  tar zxf jenkins-plugins.tar.gz -C /var/lib/jenkins/
[root@jenkins ~]# /etc/init.d/jenkins restart

再次访问web页面,如图:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
已经可以看到Jenkins的工作页面!

3)配置Jenkins拉取Gitlab的仓库代码

如图:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
因为采用的SSH的方式来获取代码,所以需要密钥对。在gitlab上已经存放了公钥,上图中红字报错的信息就是找不到私钥,所以接下来需要手动添加私钥!

[root@jenkins ~]# cat ~/.ssh/id_rsa            #查看私钥,并复制全部内容
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA3uXh+36ATD8j2CQGovVpPUvIF6kFf2ei6YseQjQ6wcnpou9N
xjhWmzJ2LKinnfS0SJ9QsuM1b7i0EJal8VyOql2H1aeQ93y/awVavN5Z5+68zgKv
/PdDRDK9EDd5ANWP9YiTpeoXPL6aupF4BsAKpmYtQrY1ApEeDMc9KMI7cT33+MW7
GdSRYPxHMH0NRtamEbRasJhBQbUlrDb3HpAUz0Xax9CTQzIBxLeRE/Fpq2+pG2iD
c+LzLYEGSswX/u2QPE3uRkZFM7mit3NS/PRslzF1RuYMWNoYo9pnSCOOkWCM+Qxx
NvIMGIkbEs5RnU/m5Y9CaycD2x6RKNcO84nYPQIDAQABAoIBAQCC893zalun8AR4
DJpVjQbaOzaAKA4RzupYeSI61QKcLar0zdEMnrbLETd6f0+SrlxouiioIHKZg5NO
l6NAjRdIIhEWxg6WSBURpCCuC5gYehs0kUGhxgcf/wsyhtSxV8bvAuFzvXcPeg/f
gm1Y0eSv5CG9Kt0z99wGt9tHoe1YVm4mvvxwIDs359C3bt9SwT57xBSkC5THExdx
Xfdtn3jGiHgQpEf/D3JS1MK+nK6B5kULKTXQUeUm2BWzKodCu38jEnoZA2ARhiZa
ONKf7qgl6mV+5jT2iKd8Ams4F3NwOp9muCGjc1XXcO8JSnAZ1/P7QVVGv1FrHbNZ
r9F6dSKhAoGBAPOua5XjR8bfsRyCL5ftTwGva7ND3YuhLLK72FFiIelVuoC9e6aj
kqiC/vHnjMG/KOVG9WDDT5HE8CdaRUj5l79u+EdeQRbWn40NxhlQTNS+69x8XCYB
zo5CFP5gd4KP1FHJig+Sujc2L2LQIiDaXhbtBMWHfMbP1Dm/9tQIO1xFAoGBAOoq
fyUXuLX/x+GimMIPTh8Z8okeVo8t3jxE6d5hVCZ5jlb3xcVM0KCTr/sqB689TPLh
fIYZfVRwNeJ2NpFWf8b8EK0FHnkEdwC8iBX/mNNXZou0TOCws1LfgE6UL1MXQXzL
QuVe9RayIMM/3RjALaV6DuHsqCtolFHlLLlPx5eZAoGADnPm36H2TN5Rk95I0lr5
16C+44f/6NsrWoJ3pwQJ/NvfzujuH4kOFr6GPnS8TXV4CHk37oBHBN9IWx0ohNaA
4JLFWP5HIAKkven2OOQhWnDkblRV5s8uoBNdSWURUYYUUrGAZcIPF104XET58Tbi
Y7u1D74kcWo8LRysmBDQ7H0CgYBliPHCoquL9xGzi65TDxHfuH+K5yW/RbNETNlf
fLJhUHngyeTubSVVS1SWQp48ZQc1lYJKH0lR0Kn8vSdiE7CqFmggrcSN0trK7fTQ
HRkmIpKrZw2iq9vFxnW7HNP8YmwZ8YTbMjZxleFQ6CM1dTcVtnw3iEdPMzSE4itn
Wul/mQKBgQDa07lHrrHPvcNQl9xuLEoDjoMkde8QxUd7DtLgnE4UW6Uz/A4Y19if
WkP3yimnjFKUuwaQCsFl/mnqxsSy62onaqdiEMIw/00ouWbi9v11Nl0ulLzSylkM
QNdraUsH3BkW2fNNSKWDLAyFAr4uL5xo30SUE0oX/v6MNdaTXmZrNg==
-----END RSA PRIVATE KEY-----

Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
服务器端检测同步的数据:

[root@jenkins ~]# ls /var/lib/jenkins/workspace/web01
123.txt  README.md
[root@jenkins ~]# cat /var/lib/jenkins/workspace/web01/123.txt 
hello world

五、配置Jenkins+gitlab实现持续自动集成

在进行以下配置,为了快速、方便,推荐下载本人提供的插件

配置如图:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
依次上传我提供的包,顺序如下:gitlab-oauth——>gitlab-plugin ——> windows-slaves ——>ruby-runtime ——>gitlab-hook即可!

如果想要在线安装插件,可以更改其插件来源为清华大学的Jenkins镜像站的URL,这里附加一个更改的方法的链接,自行更改即可!
修改内容如下:
Jenkins+Gitlab实现持续集成
修改插件地址到此为止!

由于接下来大部分就是鼠标点点就可以了,这里只附加关键的图!
依次点击:系统管理——>全局安全配置——>授权策略
Jenkins+Gitlab实现持续集成
依次点击:系统管理——>系统设置
Jenkins+Gitlab实现持续集成
上述操作完成后,进行以下操作:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
在终端生成令牌并复制:

[root@jenkins ~]# openssl rand -hex 10               #复制以下内容
a13d2c8d22991c70a9e5

Jenkins+Gitlab实现持续集成

回到Gitlab的web页面,进行如下操作:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成

接下来需要去Jenkins页面找到所需的URL!如下:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
我们需要对Jenkins的URL进行拼接大概是:Jenkins的访问地址+/job....=身份验证令牌码拼接后的内容:http://192.168.1.10:8081/job/web01/build?token=a13d2c8d22991c70a9e5

然后对到gitlab的页面,输入Jenkins的URL,如图:
Jenkins+Gitlab实现持续集成
添加完成后,下拉页面,进行以下操作:
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
至此,持续部署便安装完成了,接下来就是测试了,在终端上提交代码到gitlab上,查看Jenkins有没有自动同步,如下:

#向gitlab推送新的代码
[root@jenkins ~]# cd test01/
[root@jenkins test01]# echo "123456" > test.txt
[root@jenkins test01]# git add test.txt 
[root@jenkins test01]# git commit -m "commit form local second"
[root@jenkins test01]# git push origin master

Jenkins可以看到以下内容,即可说明持续部署配置完成了!
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
Jenkins+Gitlab实现持续集成
根据控制台输出的信息可以看出,代码已经同步成功了,那么在本地查看一下!

[root@jenkins ~]# cat /var/lib/jenkins/workspace/web01/test.txt 
123456
#与我们刚才提交的文件一样

———————— 本文至此结束,感谢阅读 ————————