Deployment Jenkins + Gitlab achieve continuous integration

Foreword

Jenkins introduced

Jenkins is just a platform, really works are the plug-ins. This is the reason jenkins popular, because what plug-ins are jenkins Jenkins Hudson is the predecessor of continuous integration is based on a Java development tool for monitoring program duplication of work, Hudson was acquired to become the commercial version. Later, the founders wrote a jenkins, jenkins functionally far more than hudson.

References: Jenkins Chinese network

Before entering the topic deployment installed, there are several issues that need to find out! ! !

1. What is the integration?

Refers to code by a compiler, publish and test until a process on-line.

2. What is Continuous Integration?

Efficient, integrated work constantly iteration of the continuing nature of the code.

3, how to achieve efficient and accurate continuous integration

The essential need for a capable automation, and visualization platform to help us.

According to the above points of view, Jenkins is possible to achieve a continuous integration platform.

4. Why is Jenkins to help us achieve continuous integration?

1) Jenkins is an open source, and continuous integration system based on JAVA code development.

Because the very rich plug-in support, so we can easily get through the repository, build a test environment, all aspects of the online environment. Friendly and rich notify users and developers, managers.

2) Simple installation and maintenance

Installation Jenkins, less complex. And support a common platform.

3) Java application used

In the enterprise software build process, JAVA applications engineering slightly more complex, due to the complexity and building codes on the line, and restart the service. The whole process down, consuming more time, Jenkins was able to compile a good way to integrate maven, and the use of automated plug-ins and custom script development support. So now widely used continuous integration platform JAVA project.

Then all packages used mostly from Qinghua open mirror sites for download.

First, deploy the installation gitlab

1, the installation gitlab

[root@jenkins ~]# wget https://mirrors-i.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.8-ce.0.el7.x86_64.rpm
[root@jenkins ~]# rpm -ivh gitlab-ce-11.9.8-ce.0.el7.x86_64.rpm 
#由于我不打算做域名解析,所以需要修改其配置文件
root@jenkins ~]# vim /etc/gitlab/gitlab.rb 
external_url 'http://192.168.20.2'     #将原本的域名改为本机IP
[root@jenkins ~]# gitlab-ctl reconfigure  #重新配置gitlab,就算不修改配置文件,也需要在安装后重新配置gitlab
[root@jenkins ~]# netstat -anpt | grep -w 80    #确定其80端口在监听

2, the configuration gitlab

Client Access server's IP address, you can see the following interface (configuration password and log in.):

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

上传服务器公钥(接下来的操作与在github上大同小异),先在服务器上生成密钥对:

[root@jenkins ~]# ssh-keygen -t rsa -C "[email protected]"
[root@jenkins ~]# cat ~/.ssh/id_rsa.pub    #查看生成的公钥并复制其内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeOeInVnfQiVdTTiA8MyaIuMdrtQUce1BpiBR8d2IAWS4PVznRub+m9hRR2vRRK3K3T4oMGpgjvj7s5n8n4AcFojDRsNgCrpprz4jlTykm0okQclXtOzeFfpLzwp08l0mmb3ZotuU/iK5sYUh70MAxG/gSzfZ5Cscmba+HGSYksN75BRkYBOT3VBJHuqhdHEIrmK0uOUU4/F3ImqrBoOs3/2c6aI5AxrHGy3aVdWAcg2Pg541djMD74DJCaVpPj08GQNZZBmN/p7Ft3v6Vi+jqty7CQF+uhs1x3oD/tka88F/4A/rMR862TqATQ+Uuqn2LOfrvGR6kzJH5MtyKOumB [email protected]

然后回到web界面:

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

添加后如下:

Deployment Jenkins + Gitlab achieve continuous integration

创建一个库:

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

回到服务器上进行克隆刚刚创建的库:

[root@jenkins ~]# git clone [email protected]:root/test01.git  #克隆
[root@jenkins ~]# cd test01/      #进入克隆的库
[root@jenkins test01]# ls  #该目录下的东西和刚刚web页面创建好库后的内容一样
README.md
#自报家门
[root@jenkins test01]# git config --global user.name test
[root@jenkins test01]# git config --global user.email "[email protected]"
#向远端库上传文件进行测试
[root@jenkins test01]# echo "aaaaaaaaaaaa" > test.txt
[root@jenkins test01]# git add test.txt
[root@jenkins test01]# git commit -m "commit from local"
[root@jenkins test01]# git push origin master      #推送到远端库

刷新web界面的库页面即可看到刚刚推送的测试文件:

Deployment Jenkins + Gitlab achieve continuous integration

至此,说明gitlab配置无误,即可告一段落。

二、部署安装Jenkins

1、安装Jenkins

#下载并安装
[root@jenkins ~]# wget https://mirrors-i.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.172-1.1.noarch.rpm
[root@jenkins ~]# rpm -ivh jenkins-2.172-1.1.noarch.rpm 
[root@jenkins ~]# rpm -ql jenkins      #查看其相应文件的存放路径
[root@jenkins ~]# sed -i 's/JENKINS_PORT="8080"/JENKINS_PORT="8081"/g' /etc/sysconfig/jenkins     #修改其监听端口
[root@jenkins ~]# /etc/init.d/jenkins start     #启动Jenkins
[root@jenkins ~]# netstat -anpt | grep 8081      #确定端口在监听
tcp6       0      0 :::8081                 :::*                    LISTEN      65172/java          

2、配置Jenkins的web界面

客户端访问Jenkins服务器的监听端口8081,然后根据提示复制其管理员密码。如下:

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
e501f94f2d914b22ae6ef7384b34531a

Deployment Jenkins + Gitlab achieve continuous integration

接下来可以安装一些基础插件,点击它的推荐安装即可,如下(我直接上传我这里的包到指定目录,就可以跳过这个步骤了,可以下载我的包,进行和我一样的操作):

Deployment Jenkins + Gitlab achieve continuous integration

我没有安装它的推荐插件,我选择以下的方式安装:

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

注意:若使用我这种方式安装,那么再次访问时需要断开外网。

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

经过上述配置,即可看到Jenkins的工作页面,如下:

Deployment Jenkins + Gitlab achieve continuous integration

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

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

[root@jenkins ~]# cat ~/.ssh/id_rsa      #复制查看到的所有内容,包括开头和结尾的“---”行
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAnjniJ1Z30IlXU04gPDMmiLjHa7UFHHtQaYgUfHdiAFkuD1c5
0bm/pvYUUdr0UStyt0+KDBqYI74+7OZ/J+AHBaIw0bDYAq6aa8+I5U8pJtKJEHJV
7Ts3hX6S88KdPJdJpm92aLblP4iubGFIe9DAMRv4Es32eQrHJm2vhxkmJLDe+QUZ
GATk91QSR7qoXRxCK5itLjlFOPxdyJqqwaDrN/9nOmiOQMaxxst2lXVgHINj4OeN
XYzA++AyQmlaT49PBkDWWQZjf6exbd7+lYvo6rcuwkBfrobNcd6A/7ZGvPBf+AP6
zEfOtk6gE0PlLqp9izn67xkepMyR+TLcijrpgQIDAQABAoIBABIUCwLznjz1dETQ
aF54ea6lbiOgSzU14botEiomecwQZHLcRH7x+jPZafjwS3n6vOC09dDsOPXchtQK
gfzMXAEIxwsuaX/k8z/eNoX8xXbqFz8J0UeJvI5EKAYx9kU2A/RASAcu3oKj20oG
04FSGKODzpRXdBHgaWC6p5OIDBOk88zsVK6ZXniVoCHhb1ngAa8k45m4IEXBspmk
znd7/8VxKkMt76IWZcgVaDOLHEbh4ikg+WL1M/DnvToCtZrb24jRbkHy2IM2oh/y
awW2WGP/KDHro1hO0mZvcBWxhN++2AExRKDXFnSN0TyMJwIb18RaYhBaBt+iJFoE
/Fv9sAECgYEA0d4LMXhXHis7I+ccEQKcfFtpFf4fgEJ7+XeyUiRTnqDmMOjSk1TL
0JMiIpzD6FTXxp/wo2JTHDKLxqW5U7qhxSZFkNwJcuGISJqD8U3jp14hdrbwAQbi
jniTAJM5mO0Un/OOhbtSaXXsRlUDkgcG4nM2g4SRehTlLSh0qkiZ+KkCgYEAwQHP
Luh/YYis31oAdrF+1JyK2OBiLg+YuLbx6j7b0gLTwJA2KFKchnNHZ1uWq616Ewf3
7Ajy1/8VlAfnSWZh1TPHEFAYes293AT6Z0Ij8eEc9dG/O4Lq/bM3ChgxYKP4ef/E
BwuijDz0wDn253QfcGuh4Ss15DtbOS+abDS0ORkCgYAoRzdavT/rGFz3XQmz8g5a
h6i5gdZF5XypumFNBo/N6A+F34laoXGkjDiG8BNhabcn9dZXZS2SQdk1vOS+vxkB
H4FGdhSSKdrgJFeiXlKM8rH1eNLDP7EHqvh7qcXqJcZJlJML85Gzj+BS90oCIrsd
hwM1ZqINDimV6yfI7rouUQKBgBtP4DupFu18Y8oveEVTlLkNdfB+wCX4ewoYiV82
ifDMCZ8ESUWnexLjmUUdBtNAdzfeNs0l7wd1x13tSGNwo4OCEjdSvkQSfT13Tt/x
0hhWXLzEc6U+P3arN6ysA8DDM1RAR0Mf+F6T+aaCDVhvbEuCT6QHc1bat2v+OoH5
a09xAoGBAJGu+GSpxO/vRDfxaJGgclhEXpCahuL6ggUZcZSsUu/qiCq4cbSC26/9
X7+cws3d5ow1vIZttM19meK1Z6r0qOii7GOX3vEWVsDyrt5rpVNSb/M6F1D7MV07
YV1esSxZGB9Spa7TAzuE2bwkMIDAu72nCRx+MO83vHSFRpkln+7O
-----END RSA PRIVATE KEY-----

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

可以看到以下页面即可说明配置无误:

Deployment Jenkins + Gitlab achieve continuous integration

终端查看本地同步过来的文件:

[root@jenkins ~]# ls /var/lib/jenkins/workspace/web01
README.md  test.txt
[root@jenkins ~]# cat /var/lib/jenkins/workspace/web01/test.txt 
aaaaaaaaaaaa

三、配置Jenkins+Gitlab实现持续集成

接下来就是这篇文件的关键部分了。

在进行下面的配置前,若为了方便,可以先下载我提供的插件。

Deployment Jenkins + Gitlab achieve continuous integration

然后你会看到一些报红的提示,不用在意,下拉页面,如下:
Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

依次上传我提供的包,顺序如下:gitlab-oauth====》gitlab-plugin ====》 windows-slaves ====》ruby-runtime ====》gitlab-hook

根据以下操作,依次上传上面的包:

Deployment Jenkins + Gitlab achieve continuous integration

插件上传完成后,即可。

这里我附加一下,如果想要在线安装插件,可以更改其插件来源为清华大学的Jenkins镜像站的URL,这里附加一个更改方法的链接请添加链接描述,自行参看进行更改即可。

修改过程如下:

Deployment Jenkins + Gitlab achieve continuous integration

附加内容至此结束。

Since most of the next operation is a little point, so it does not capture, and will cut more crucial Fig.

Click: Systems Management === "Global Security Configuration ===" authorization policy, then do the following:
Deployment Jenkins + Gitlab achieve continuous integration
Click: System Management === "System Settings, and then do the following:
Deployment Jenkins + Gitlab achieve continuous integration

Then do the following:

Deployment Jenkins + Gitlab achieve continuous integration
Deployment Jenkins + Gitlab achieve continuous integration

Generating a copy token and a terminal:

[root@jenkins ~]# openssl rand -hex 10  #复制下面的字符串
dbd47a73dba048febf4f

Deployment Jenkins + Gitlab achieve continuous integration

Back Gitlab web page, do the following:

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration
Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Next we need to find the desired URL Jenkins

Jenkins operates in the following web page:

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

After seeing the above, we need the URL stitching Jenkins, Jenkins is probably the access address + / job .... = authentication token code. I'm here after stitching as follows: http://192.168.20.2:8081/job/web01/build?token=dbd47a73dba048febf4f

Then back to gitlab page, enter Jenkins's URL:

Deployment Jenkins + Gitlab achieve continuous integration

Once added, scroll down and click below to test:

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

So far, they continue to deploy the installation is complete, the next step is to test the submitted code to gitlab on the terminal, see Jenkins there is no automatic synchronization, as follows:

#向gitlab提交新代码
[root@jenkins ~]# cd test01/
[root@jenkins test01]# echo "dffffffffdfdfdfdf" > chixu.txt 
[root@jenkins test01]# git add chixu.txt
[root@jenkins test01]# git commit -m "chi xu bu shu test"
[root@jenkins test01]# git push origin master

Jenkins can see the following, you can explain the continued deployment of the configuration is complete. as follows:

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Deployment Jenkins + Gitlab achieve continuous integration

Forget it, or look at it locally:

[root@jenkins test01]# cat /var/lib/jenkins/workspace/web01/chixu.txt 
#就是我们刚提交的文件
dffffffffdfdfdfdf

-------- end of this article so far, thanks for reading --------

Guess you like

Origin blog.51cto.com/14154700/2450875