(1)Continuous integration(CI)php

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

(2)沒有持續集成node

項目作模塊集成的時候,發現不少藉口都不通==>浪費大量時間linux

須要手動去編譯打包最新的代碼==>構建過程不透明git

發佈代碼,上線,基本靠手工==>腳本亂飛docker

 

(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.加入集羣

  • 2、jenkins部署

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修改成其餘端口

安裝全部插件:

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

  • 3、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,能夠不選,若是是從級別必須選擇「儘量的使用這個節點」

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

  • 3、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版本

  • 4、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  ]