什麼是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
安裝相關目錄
[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
進入插件選擇界面,如有明確需求,直接安裝所需插件即可,這裏選擇的是推薦,推薦會安裝大部分插件
根據引導創建用戶、配置url即可完成安裝
需求,結合gitlab做可持續化集成和發佈
所需插件
Credentials Plugin | 簽名證書管理插件 |
Gitlab Plugin | 安裝後從gitlab獲取代碼 |
Git Plugin & Git Client Plugin | 用於Jenkins在gitlab拉取源碼 |
GitLab Hook | gitlab觸發Jenkins構建項目(鉤子) |
Gitlab Authentication | gitlab和Jenkins認證相關得插件 |
SSH Plugin | 遠程執行shell腳本 |
Publish Over SSH | 用於通過ssh部署應用 |
通過web打開Jenkins操作頁面,在插件管理,可選插件中選擇要安裝的插件直接安裝,安裝完成後重啓Jenkins
爲git添加公鑰
爲公鑰定義一個標題,並寫入公鑰
如果gitlab和Jenkins不在同一主機,那麼需要將Jenkins生成的公鑰寫入
配置完成後測試是否可以獲取代碼
[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添加私鑰
選擇類型並填入用戶名及私鑰
新建一個任務
配置項目描述及源碼管理
配置完成後測試構建項目是否成功,檢查控制檯輸出,success爲成功
模擬發佈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的權限
在構建中選擇相對應的構建方式,保存後構建測試是否可用
多臺web部署只需要增加scp即可
配置觸發器,構建鉤子,配置觸發器在高級選項中Generate生產驗證令牌,記錄URL和令牌密鑰
gitlab配置集成配置
創建成功後push event測試,獲得返回碼200爲成功。
使用流程圖展示jod的順序
安裝build pipeline插件,安裝成功後做以下操作,根據實際需要在Display中選擇顯示的build次數即完成