Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份
-
一、什么是持續集成?
(1)Continuous integration(CI)
持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。
(2)沒有持續集成
項目做模塊集成的時候,發現很多借口都不通==>浪費大量時間
需要手動去編譯打包最新的代碼==>構建過程不透明
發布代碼,上線,基本靠手工==>腳本亂飛
?
(3)持續集成最佳實踐:
維護一個單一的代碼庫
使構建自動化
執行測試是構建的一部分
集成日志及歷史記錄
使用統一的依賴包管理庫
每天至少集成一次
?
(4)jenkins介紹
Jenkins只是一個平臺,真正運作的都是插件。這就是jenkins流行的原因,因為jenkins什么插件都有?
Hudson是Jenkins的前身,是基于Java開發的一種持續集成工具,用于監控程序重復的工作,Hudson后來被收購,成為商業版。后來創始人又寫了一個jenkins,jenkins在功能上遠遠超過hudson
Jenkins官網:https://jenkins.io/
?
(5)部署代碼上線流程:
1.代碼獲取(直接了拉取)
2.編譯 (可選)
3.配置文件放進去
4.打包
5.scp到目標服務器
6.將目標服務器移除集群
7.解壓并放置到Webroot
8.Scp 差異文件
9.重啟 (可選)
10.測試
11.加入集群
-
二、jenkins部署
安裝所有插件:
安裝插件完成,設置用戶名:jenkins,密碼:jenkins
-
三、jenkins的插件以及配置
Jenkins系統管理比較重要的就是插件管理了 ,因為jenkins的工作全部是由插件來完成。
在插件管理中,有可更新、可選插件、已安裝,日常的插件安裝都是在這個界面上完成的。比如為了和gitlab協同,我們需要安裝gitlab的插件。
在高級選項中,我們可以在jenkins官網下載插件,然后上傳插件 ,如圖:
?
因為很多插件需要×××才可以繼續下載,jenkins還提供了代理的設置
還是在服務器目錄下進行上傳插件
目錄路徑= /var/lib/jenkins/plugins/
這個目錄下是我們安裝所有的插件
jenkins的目錄介紹:
[root@linux-node2 ~]# rpm -ql jenkins /etc/init.d/jenkins #jenkins的啟動文件 /etc/logrotate.d/jenkins /etc/sysconfig/jenkins #jenkins的配置文件 /usr/lib/jenkins /usr/lib/jenkins/jenkins.war #jenkins的程序war包 /usr/sbin/rcjenkins #jenkins的為二進制文件 /var/cache/jenkins #jenkins的程序文件,運行程序解壓出來的 /var/lib/jenkins #jenkins的主目錄 /var/log/jenkins #jenkins的日志文件jenkins的升級,只需要將war包解壓到/var/lib/jenkins目錄下,重啟jenkins即可。友情提示: 卡啟動問題 jenkins在第一次安裝啟動時會向官網回傳信息,如果網絡離線可以正常安裝。當網絡在線,但是 還有可能是內存不足備份: tar zcvf jenkins.tar.gz /var/lib/jenkins系統管理-->系統配置
執行者數量:配置并發數量,一般設置為5,不超過10
用法:如果是主server,可以不選,如果是從級別必須選擇“盡可能的使用這個節點”
生成前等待時間:配置該時間,避免錯誤操作,有時間返回
-
三、jenkins升級
?
(1)查看war包所在的目錄 [root@linux-node2 ~]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins /usr/lib/jenkins/jenkins.war /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins(2)下載最新穩定版的war包 [root@linux-node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.46/jenkins.war --2017-12-21 14:56:10-- https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.46/jenkins.war Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.6.178, 2402:f000:1:416:101:6:6:177 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 68663046 (65M) [application/java-archive] Saving to: ‘jenkins.war’36% [====================================================> ] 24,829,614 707KB/s eta 60s當前jenkins版本為2.32.2
(3)停止jenkins服務 [root@linux-node2 ~]# service jenkins stop Stopping jenkins (via systemctl): [ OK ](4)備份原來的war包,并拷貝最新版本war包到/usr/lib/jenkins目錄下 [root@linux-node2 ~]# cd /usr/lib/jenkins/ [root@linux-node2 jenkins]# mv jenkins.war jenkins-2.32.2.war.bak [root@linux-node2 jenkins]# mv /root/jenkins.war . [root@linux-node2 jenkins]# service jenkins start Starting jenkins (via systemctl): [ OK ] [root@linux-node2 jenkins]# netstat -tulnp |grep 8080 tcp6 0 0 :::8080 :::* LISTEN 47298/java 成功升級到jenkins 2.46版本
-
四、jenkins備份
在jenkins界面創建一些項目,這里使用rsync,主要是為了保持備份的屬性,如果使用scp或cp有時會導致文件屬性的改變而導致jenkins異常。
(1)創建備份目錄 [root@linux-node2 ~]# mkdir /data/backup/jenkins -p(2)備份/var/lib/jenkins目錄 [root@linux-node2 ~]# rsync -raz --delete --progress /var/lib/jenkins /data/backup/jenkins/(3)刪除/var/lib/jenkins/ [root@linux-node2 ~]# rm -rf /var/lib/jenkins/[root@linux-node2 ~]# service jenkins restart Restarting jenkins (via systemctl): Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.[FAILED] [root@linux-node2 ~]# service jenkins status JENKINS_HOME directory does not exist: /var/lib/jenkins(4)恢復備份 [root@linux-node2 ~]# rsync -raz --delete /data/backup/jenkins/jenkins /var/lib/ [root@linux-node2 ~]# service jenkins restart Restarting jenkins (via systemctl): [ OK ]?
轉載于:https://www.cnblogs.com/linuxk/p/9453638.html
總結
以上是生活随笔為你收集整理的Gitlab+Jenkins学习之路(六)之Jenkins部署、升级和备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sklearn中的交叉验证(Cross-
- 下一篇: 验证