Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

  • 一、什麼是持續集成?
  • (1)Continuous integration(CI)

    持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘快地發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    (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部署
    <code>(1)安裝JDK 
    [root@linux-node2 ~]# yum instsall -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

    (2)下載jenkins的rpm包
    [root@linux-node2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.32.3-1.1.noarch.rpm
    --2017-12-21 09:11:58-- https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.32.3-1.1.noarch.rpm

    正在解析主機 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.6.178, 2402:f000:1:416:101:6:6:177
    正在連接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.6.178|:443... 已連接。
    已發出 HTTP 請求,正在等待回應... 200 OK
    長度:69675984 (66M) [application/x-redhat-package-manager]
    正在保存至: “jenkins-2.32.3-1.1.noarch.rpm”

    (3)安裝jenkins
    [root@linux-node2 ~]# rpm -ivh jenkins-2.32.3-1.1.noarch.rpm
    警告:jenkins-2.32.3-1.1.noarch.rpm: 頭V4 DSA/SHA1 Signature, 密鑰 ID d50582e6: NOKEY
    準備中... ################################# [100%]
    正在升級/安裝...
    1:jenkins-2.32.3-1.1 ################################# [100%]

    (4)啟動jenkins
    [root@linux-node2 ~]# service jenkins start
    Starting jenkins (via systemctl): [ 確定 ]

    [root@linux-node2 ~]# netstat -tulnp|grep 8080
    tcp6 0 0 :::8080 :::* LISTEN 42160/java
    瀏覽器訪問:192.168.56.12:8080:如圖
    [root@linux-node2 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
    8addd06f53f6405da6133356af1ca3b0 #登陸界面有提示輸入密碼,初始密碼文件為/var/lib/jenkins/secrets/initialAdminPassword

    友情提示:jenkins如果跟gitlab在一臺服務器需要將jenkins的端口進行修改,需要將jenkins的8080修改為其他端口/<code>
    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    安裝所有插件:

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    安裝插件完成,設置用戶名:jenkins,密碼:jenkins

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    • 三、jenkins的插件以及配置

    Jenkins系統管理比較重要的就是插件管理了 ,因為jenkins的工作全部是由插件來完成。

    在插件管理中,有可更新、可選插件、已安裝,日常的插件安裝都是在這個界面上完成的。比如為了和gitlab協同,我們需要安裝gitlab的插件。

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    在高級選項中,我們可以在jenkins官網下載插件,然後上傳插件 ,如圖:

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    因為很多插件需要×××才可以繼續下載,jenkins還提供了代理的設置

    還是在服務器目錄下進行上傳插件

    目錄路徑= /var/lib/jenkins/plugins/

    這個目錄下是我們安裝所有的插件

    jenkins的目錄介紹:

    <code>[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/<code>

    系統管理-->系統配置

    執行者數量:配置併發數量,一般設置為5,不超過10

    用法:如果是主server,可以不選,如果是從級別必須選擇“儘可能的使用這個節點”

    生成前等待時間:配置該時間,避免錯誤操作,有時間返回

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    • 三、jenkins升級

    <code>(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/<code>

    當前jenkins版本為2.32.2

    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    <code>(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版本/<code>
    Gitlab+Jenkins學習之路(六)之Jenkins部署、升級和備份

    • 四、jenkins備份

    在jenkins界面創建一些項目,這裡使用rsync,主要是為了保持備份的屬性,如果使用scp或cp有時會導致文件屬性的改變而導致jenkins異常。

    <code>(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 ]/<code>


    分享到:


    相關文章: