怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

一、Jenkins及持續(xù)集成

1)什么是Jenkins?

Jenkins是一個(gè)開(kāi)源軟件項(xiàng)目,旨在提供一個(gè)開(kāi)放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能。Jenkins是基于Java開(kāi)發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,功能包括:
1)持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目;
2)監(jiān)控外部調(diào)用執(zhí)行的工作;

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了靈寶免費(fèi)建站歡迎大家使用!

對(duì)Jenkins有興趣的朋友可以參考Jenkins中文文檔

2)什么是持續(xù)集成?

1)什么是集成?

指的是代碼由編譯、發(fā)布、測(cè)試、上線的一個(gè)過(guò)程!

2)什么是持續(xù)集成?

高效的、持續(xù)性質(zhì)的不斷迭代代碼的集成工作!

3)如何高效準(zhǔn)確的實(shí)現(xiàn)持續(xù)集成?

必不可少的需要一套能自動(dòng)化、并且可視化的平臺(tái)來(lái)幫助我們!

二、為什么Jenkins能幫助我們進(jìn)行持續(xù)集成?

1)Jenkins是一個(gè)開(kāi)源的、且基于JAVA代碼開(kāi)發(fā)的持續(xù)集成系統(tǒng)

因?yàn)楹蟹浅XS富的插件支持,所以我們可以方便的打通版本庫(kù)、測(cè)試構(gòu)建環(huán)境、線上環(huán)境的所有環(huán)節(jié)。并且豐富友好的通知使用者和開(kāi)發(fā)、管理人員。

2)安裝維護(hù)簡(jiǎn)單

安裝Jenkins,不太復(fù)雜。而且支持通用的平臺(tái)。

3)Java應(yīng)用常用

在企業(yè)的軟件構(gòu)建過(guò)程中,JAVA的應(yīng)用工程稍顯復(fù)雜,由于復(fù)雜構(gòu)建和代碼上線、并且服務(wù)的重啟。整個(gè)過(guò)程下來(lái),消耗的時(shí)間較多,Jenkins卻能很好的集成maven的編譯方式,而且利用自動(dòng)化的插件和自定義開(kāi)發(fā)腳本的支持。所以目前廣泛的應(yīng)用于JAVA工程的持續(xù)集成平臺(tái)。

接下來(lái)使用的大多數(shù)軟件包都是從清華大學(xué)開(kāi)源鏡像站中下載!

三、部署安裝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'
#修改為本機(jī)的IP地址,便于訪問(wèn)
[root@jenkins ~]# gitlab-ctl reconfigure
#重新配置gitlab,就算不修改配置文件,也需要在安裝后重新配置gitlab
[root@jenkins ~]# netstat -anpt | grep -w 80   
#確定其80端口在監(jiān)聽(tīng)

2)配置gitlab

如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

3)生成密鑰對(duì),便于ssh登錄

[root@jenkins ~]# ssh-keygen -t rsa -C "1454295320@qq.com"      #生成秘鑰對(duì)
[root@jenkins ~]# cat ~/.ssh/id_rsa.pub          #查看公鑰并復(fù)制
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDuyAYPbmf92Pi6OOfcbdi7BCxN+Fq1c5lc4YAQhM8420mwfT4WltUOSXUidxR2oT3ViXSxwzlOr+XoHJ4YJEeQ3jIeXr5aSwtU5YTNgvVA+SYk0uvPLJg11NdEuMkSIB2K8PJ9zSxvppKbAkynmLEyZ1n61j5NbbApjgMslUqdB10vWowSE/Xoo11ugooQH2y3GxVrSv/EMeaVkToMVFM7BWx0pLBLi+tMJpb6Aj0pOSyv5rBj0hA1+2qrPQ3DtJc4QGMK+FRyxw/N13slfmoLzZ+6bF9oyNQZNWa9isL5C80srZhF7JkCrscYMIo0hOCkYOLVGJDFSgxiceG9ZmYh 1454295320@qq.com

接下來(lái)需在web頁(yè)面進(jìn)行操作。如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

4)創(chuàng)建一個(gè)庫(kù)

如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

5)本地服務(wù)器進(jìn)行測(cè)試

[root@jenkins ~]# git clone git@192.168.1.10:root/test01.git
#執(zhí)行克隆操作,第一次根據(jù)提示輸入yes即可!
[root@jenkins ~]# cd test01/
[root@jenkins test01]# ls
README.md
#進(jìn)入克隆的庫(kù),查看是否與web頁(yè)面創(chuàng)建的庫(kù)的內(nèi)容一致
[root@jenkins test01]# git config --global user.name admin
[root@jenkins test01]# git config --global user.email admin@admin.com
#自報(bào)家門,進(jìn)行簡(jiǎn)單的聲明用戶名及郵箱地址
[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"
#創(chuàng)建文件進(jìn)行測(cè)試
[root@jenkins test01]# git push origin master
#將本地的測(cè)試文件推送到遠(yuǎn)端(gitlab)

6)gitlab驗(yàn)證

刷新頁(yè)面之后,如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

gitlab的配置到此先告一段落,接下來(lái)安裝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相關(guān)的文件存放的位置
[root@jenkins ~]# sed -i 's/JENKINS_PORT="8080"/JENKINS_PORT="8081"/g' /etc/sysconfig/jenkins
#由于gitlab的組件已經(jīng)占用了8080端口,所以需要更改監(jiān)聽(tīng)的端口
[root@jenkins ~]# /etc/init.d/jenkins start               # 啟動(dòng)Jenkins服務(wù)
[root@jenkins ~]# ss -lnt | grep 8081                 #確定端口在監(jiān)聽(tīng)
LISTEN     0      50          :::8081                    :::*  

2)Jenkins web頁(yè)面的配置

如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
c6e0fcde793648e9b4bad088e8896897
#查看密碼信息,并將其復(fù)制

怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
由于下載其插件時(shí)間較長(zhǎng),所以采用另一種方法:
等安裝完成一個(gè)插件后,將網(wǎng)絡(luò)斷開(kāi)!下載所需軟件

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

再次訪問(wèn)web頁(yè)面,如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
已經(jīng)可以看到Jenkins的工作頁(yè)面!

3)配置Jenkins拉取Gitlab的倉(cāng)庫(kù)代碼

如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
因?yàn)椴捎玫腟SH的方式來(lái)獲取代碼,所以需要密鑰對(duì)。在gitlab上已經(jīng)存放了公鑰,上圖中紅字報(bào)錯(cuò)的信息就是找不到私鑰,所以接下來(lái)需要手動(dòng)添加私鑰!

[root@jenkins ~]# cat ~/.ssh/id_rsa            #查看私鑰,并復(fù)制全部?jī)?nèi)容
-----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-----

怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
服務(wù)器端檢測(cè)同步的數(shù)據(jù):

[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實(shí)現(xiàn)持續(xù)自動(dòng)集成

在進(jìn)行以下配置,為了快速、方便,推薦下載本人提供的插件

配置如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
依次上傳我提供的包,順序如下:gitlab-oauth——>gitlab-plugin ——> windows-slaves ——>ruby-runtime ——>gitlab-hook即可!

如果想要在線安裝插件,可以更改其插件來(lái)源為清華大學(xué)的Jenkins鏡像站的URL,這里附加一個(gè)更改的方法的鏈接,自行更改即可!
修改內(nèi)容如下:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
修改插件地址到此為止!

由于接下來(lái)大部分就是鼠標(biāo)點(diǎn)點(diǎn)就可以了,這里只附加關(guān)鍵的圖!
依次點(diǎn)擊:系統(tǒng)管理——>全局安全配置——>授權(quán)策略
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
依次點(diǎn)擊:系統(tǒng)管理——>系統(tǒng)設(shè)置
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
上述操作完成后,進(jìn)行以下操作:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
在終端生成令牌并復(fù)制:

[root@jenkins ~]# openssl rand -hex 10               #復(fù)制以下內(nèi)容
a13d2c8d22991c70a9e5

怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

回到Gitlab的web頁(yè)面,進(jìn)行如下操作:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?

接下來(lái)需要去Jenkins頁(yè)面找到所需的URL!如下:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
我們需要對(duì)Jenkins的URL進(jìn)行拼接大概是:Jenkins的訪問(wèn)地址+/job....=身份驗(yàn)證令牌碼拼接后的內(nèi)容:http://192.168.1.10:8081/job/web01/build?token=a13d2c8d22991c70a9e5

然后對(duì)到gitlab的頁(yè)面,輸入Jenkins的URL,如圖:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
添加完成后,下拉頁(yè)面,進(jìn)行以下操作:
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
至此,持續(xù)部署便安裝完成了,接下來(lái)就是測(cè)試了,在終端上提交代碼到gitlab上,查看Jenkins有沒(méi)有自動(dòng)同步,如下:

#向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可以看到以下內(nèi)容,即可說(shuō)明持續(xù)部署配置完成了!
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
根據(jù)控制臺(tái)輸出的信息可以看出,代碼已經(jīng)同步成功了,那么在本地查看一下!

[root@jenkins ~]# cat /var/lib/jenkins/workspace/web01/test.txt 
123456
#與我們剛才提交的文件一樣

———————— 本文至此結(jié)束,感謝閱讀 ————————

當(dāng)前標(biāo)題:怎么用Gitlab和Jenkins實(shí)現(xiàn)持續(xù)集成?
文章路徑:http://muchs.cn/article30/pphppo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、電子商務(wù)、外貿(mào)建站、網(wǎng)站排名、移動(dòng)網(wǎng)站建設(shè)、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作