Jenkins+Gitlab實現持續集成

1、Jenkins及持續集成

1)什麼是Jenkins?

Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins是基於Java開發的一種持續集成工具,用於監控持續重複的工做,功能包括:
1)持續的軟件版本發佈/測試項目;
2)監控外部調用執行的工做;html

對Jenkins有興趣的朋友能夠參考Jenkins中文文檔python

2)什麼是持續集成?

1)什麼是集成?

指的是代碼由編譯、發佈、測試、上線的一個過程!git

2)什麼是持續集成?

高效的、持續性質的不斷迭代代碼的集成工做!web

3)如何高效準確的實現持續集成?

必不可少的須要一套能自動化、而且可視化的平臺來幫助咱們!vim

2、爲何Jenkins能幫助咱們進行持續集成?

1)Jenkins是一個開源的、且基於JAVA代碼開發的持續集成系統

由於含有很是豐富的插件支持,因此咱們能夠方便的打通版本庫、測試構建環境、線上環境的全部環節。而且豐富友好的通知使用者和開發、管理人員。windows

2)安裝維護簡單

安裝Jenkins,不太複雜。並且支持通用的平臺。安全

3)Java應用經常使用

在企業的軟件構建過程當中,JAVA的應用工程稍顯複雜,因爲複雜構建和代碼上線、而且服務的重啓。整個過程下來,消耗的時間較多,Jenkins卻能很好的集成maven的編譯方式,並且利用自動化的插件和自定義開發腳本的支持。因此目前普遍的應用於JAVA工程的持續集成平臺。ruby

接下來使用的大多數軟件包都是從清華大學開源鏡像站中下載!服務器

3、部署安裝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!

4、部署安裝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

5、配置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
#與咱們剛纔提交的文件同樣

———————— 本文至此結束,感謝閱讀 ————————

相關文章
相關標籤/搜索