Jenkins結合gitlab實現自動發佈

什麼是Jenkins?

Jenkins是一個基於java開發的程序集成工具,用於監控持續重複的工作,提供一個開放易用的軟件平臺,使持續集成變成可能。

Jenkins的目的

  • 持續、自動構建/測試軟件項目

  • 監控軟件開發流程,快速問題定位及處理,提升開發效率

Jenkins的特性

  • 支持CI/CD

  • 易於安裝(yum、war包、rpm)

  • 消息通知及測試報告:集成RSS/E-mail通過RSS發佈構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告

  • 分佈式構建:支持Jenkins能夠讓多臺計算機一起構建/測試

  • 文件識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本等

  • 插件支持:支持拓展插件,如:git、svn、maven、docker等

 產品發佈流程

產品設計->開發代碼->測試功能->上線發佈

通過Jenkins支持:

持續集成(Continuous integration簡稱CI)

持續交付(Continuous delivery)

持續交付(Continuous deplotment)

環境依賴

最低配置:內存不少於256M,磁盤不低於1G,jdk版本>=8

安裝jdk1.8(這裏爲了簡單直接yum)

[root@mode-01-0005 ~]# yum install -y java-1.8.0-openjdk && \
> wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \
> rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key && \
> yum clean all && yum makecache && \
> yum install -y jenkins && \
> systemctl start jenkins

查看Jenkins admin密碼並記錄

[root@mode-01-0005 ~]# less /var/log/jenkins/jenkins.log

image.png

安裝相關目錄

[root@mode-01-0005 ~]# rpm -ql jenkins

/etc/init.d/jenkins//啓動文件

/etc/sysconfig/jenkins//配置文件

/var/cache/jenkins//緩存文件

/var/lib/jenkins//安裝目錄

/var/log/jenkins//日誌文件

若端口有衝突優先修改默認端口

通過web端訪問IP:8080

image.png

進入插件選擇界面,如有明確需求,直接安裝所需插件即可,這裏選擇的是推薦,推薦會安裝大部分插件

image.png

根據引導創建用戶、配置url即可完成安裝

需求,結合gitlab做可持續化集成和發佈

所需插件

Credentials Plugin簽名證書管理插件
Gitlab Plugin安裝後從gitlab獲取代碼
Git Plugin & Git Client Plugin用於Jenkins在gitlab拉取源碼
GitLab Hookgitlab觸發Jenkins構建項目(鉤子)
Gitlab Authenticationgitlab和Jenkins認證相關得插件
SSH Plugin遠程執行shell腳本
Publish Over SSH用於通過ssh部署應用

通過web打開Jenkins操作頁面,在插件管理,可選插件中選擇要安裝的插件直接安裝,安裝完成後重啓Jenkins

爲git添加公鑰

爲公鑰定義一個標題,並寫入公鑰

如果gitlab和Jenkins不在同一主機,那麼需要將Jenkins生成的公鑰寫入

image.png

配置完成後測試是否可以獲取代碼

[root@mode-01-0005 ~]# git clone [email protected]:test-web/web.git
Cloning into 'web'...
\S
Kernel \r on an \m
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

測試通過後,爲Jenkins添加私鑰

image.png

選擇類型並填入用戶名及私鑰

image.png

新建一個任務

image.png


配置項目描述及源碼管理

image.png

配置完成後測試構建項目是否成功,檢查控制檯輸出,success爲成功

image.png

模擬發佈web頁面

安裝apache服務,測試直接yum安裝即可

apache啓動時注意是否有端口衝突

寫一個簡單的測試文件,測試是否可以完成推送

[root@mode-01-0005 ~]# ./deploy.sh 
root
Cloning into 'web'...
\S
Kernel \r on an \m
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
\S
Kernel \r on an \m
index.html                                                                                                                                                                      100%   11    75.3KB/s   00:00
[root@mode-01-0005 ~]# cat deploy.sh 
#!/bin/bash
echo $USER 
cd /root/ 
git clone [email protected]:test-web/web.git
cd /root/web
scp -r ./* [email protected]:/var/www/html/ 
rm -rf /root/web

測試完成後繼續
爲了避免不必要的麻煩在visudo中配置Jenkins免密及執行ssh的權限

在構建中選擇相對應的構建方式,保存後構建測試是否可用

image.png

多臺web部署只需要增加scp即可

配置觸發器,構建鉤子,配置觸發器在高級選項中Generate生產驗證令牌,記錄URL和令牌密鑰

image.png

gitlab配置集成配置

image.png

創建成功後push event測試,獲得返回碼200爲成功。

image.png

使用流程圖展示jod的順序

安裝build pipeline插件,安裝成功後做以下操作,根據實際需要在Display中選擇顯示的build次數即完成

image.png

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章