2018-04-14 持續集成,jenkins介紹及安裝,ant安裝

1、jenkins介紹html

1.一、持續集成(Continuous integration,簡稱 CI)
開發中,咱們常常遇到一些奇怪問題,好比:
java

  • 本地能夠編譯成功的代碼可是同事們更新代碼後編譯出錯;
  • 在項目有多個Target(目標)的時候,資源文件只添加到了當前的Target,另一個Target這個時候是不能正常編譯的;
  • 寫的工具類,被同事改了,或者本身有改動,不少地方用到了,怎麼保證這個類的行爲沒有發生變化而影響到項目中的其它模塊呢?
  • 諸如此類。

引發各類奇怪問題的緣由有不少,好比:node

  • 開發環境比較複雜不乾淨;
  • IDE的bug;
  • 提交前有一些必要的檢查須要作,可是開發時由於各類緣由沒作。

那麼這些問題能否避免呢?固然是能夠避免的,若是代碼有新的改動,提交到版本庫中的時候,有一我的幫咱們檢查必要事項,而後作作測試。這個固然是能夠的,前提是老闆贊成專門招一個這樣的人。web

這些機械重複的事情咱們能夠找一個工具來幫咱們完成,這個工具跑在一個專門的服務器上,該服務器環境相對乾淨、能夠運行一些自動化操做(自動編譯,代碼檢查,測試等環節)。那麼這種工具,就是接下來說的「持續集成」。shell

1.二、簡單理解持續集成apache

爲解決程序代碼提交質量低,提交內容致使原有系統的bug,按時或按需自動編譯版本,自動進行自動化測試。瀏覽器

1.三、詳細理解持續集成tomcat

早集成、頻繁的集成可以幫助項目開發者在早期發現項目風險和質量問題,越到後期發現的問題,解決的成本越高,從而有可能致使項目延期或者項目失敗。服務器

持續集成是一種軟件開發實踐,即團隊開發成員常常集成他們的工做,經過每一個成員天天至少集成一次,也就是一個團隊天天將集成屢次,每次的集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證。簡單來講,就是持續的定時的在多個團隊成員的工做中進行集成,而且給予反饋。網絡

1.四、持續集成的核心價值

  1. 持續集成中重複的編譯發佈等環節都是自動完成的,無需太多的人工干預,有利於減小重複過程以節省時間、費用和工做量;
  2. 持續集成保障了每一個時間點上團隊成員提交的代碼是能成功集成的。換言之,任什麼時候間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能;
  3. 持續集成還能利於軟件自己的發展趨勢,這點在需求不明確或是頻繁性變動的情景中尤爲重要,持續集成的質量能幫助團隊進行有效決策,同時創建團隊對開發產品的信心。

1.五、業界廣泛認同的持續集成的原則

  1. 須要版本控制軟件保障團隊成員提交的代碼不會致使集成失敗。經常使用的版本控制軟件有IBM Rational ClearCase、CVS、Subversion 等;
  2. 開發人員必須及時向版本控制庫中提交代碼,也必須常常性地從版本控制庫中更新代碼到本地;
  3. 須要有專門的集成服務器來執行集成構建。根據項目的具體實際,集成構建能夠被軟件的修改來直接觸發,也能夠定時啓動,如每半個小時構建一次;
  4. 必須保證構建的成功。若是構建失敗,修復構建過程當中的錯誤是優先級最高的工做。一旦修復,須要手動啓動一次構建;
  5. 不更新構建失敗的代碼。

1.六、持續集成系統的組成

  1. 一個自動構建過程,包括自動編譯、分發、部署和測試等。可幫助咱們節省大量時間,完成這個過程的自動化後,在之後的開發過程當中,咱們須要作的,就是隻是提交代碼到版本庫中,構建自動完成,基本再也不須要人工干預。
  2. 一個代碼存儲庫,即須要版本控制軟件來保障代碼的可維護性,同時做爲構建過程的素材庫。
  3. 一個持續集成服務器。最好有一臺服務器單獨做爲持續集成服務器,一方面保證了環境的純淨,一方面不影響開發,並且持續集成服務器通常是隨時準備開始構建的,因此通常也不關機。本文中介紹的 Jenkins 就是一個配置簡單和使用方便的持續集成服務器。

1.七、集成操做步驟:首先要有統一的代碼庫,服務器不斷從版本控制服務器上檢查代碼狀態,看代碼是否有更新。若是發現有代碼更新,那麼就從版本控制服務器下載最新的代碼。等代碼徹底更新之後,調用自動化編譯腳本,進行代碼編譯。而後運行全部的自動化測試,而且進行代碼分析。若是其中任何一個步驟失敗,就表示build失敗,持續集成服務器會給予響應的反饋。每次代碼提交以後,都會在持續集成服務器上觸發一個定時構建,而後進行編譯、部署。

1.八、Jenkins
提到 Jenkins 就不得不提另外一個持續集成工具——Hudson , Hudson 由 Sun 公司開發,2010 年 Sun 公司被 Oracle 公司收購, oracle 公司聲稱對 hudson 擁有商標全部權。 Jenkins是從 Hudson 中分離出來的一個可擴展的持續集成引擎,並將繼續走 Open Source 的道路。兩者如今由不一樣的團隊在維護。[2]
Jenkins 在持續集成領域市場份額中居於主導地位,被各類大小規模的團隊用於用各類語言實現的各種項目中,語言包括.NET、Java、Ruby、Groovy、Grails、PHP 等。[5]

Jenkins是一個獨立的基於Java開發的一種開源持續集成工具,用於監控持續重複的工做,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能,使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。可用於自動化各類任務,如構建、測試和部署軟件。[4]
Jenkins能夠創建一個軟件項目或工做運行的計劃任務。 [2]

1.九、Jenkins特色[4]

  • 開源免費。
  • 跨平臺,支持全部的平臺。
  • 安裝配置超級簡單。能夠經過本機系統包Docker安裝,甚至能夠經過安裝Java Runtime Environment的任何機器獨立運行。[4]
  • 易於使用。web形式的可視化的用戶管理頁面,簡單、直觀、友好,發佈工做人員只須要經過簡單的 UI 操做就能夠替代原來繁瑣的發佈工做。[5]
  • master/slave支持分佈式的build。
  • tips及時快速的幫助。
  • 擁有良好的擴展性。已有的200多個開源插件可供使用,並且幾乎每週會有新的開源插件貢獻進來,這些插件的安裝都十分快捷和簡單。[5]
  • 發展良好。Jenkins 開源社區的規模變得愈來愈大、活躍度也變得愈來愈高,發展速度很是快。[5]

1.十、Jenkins 的兩個功能

  • 不斷地進行項目的構建/測試軟件。
  • 監控外部運行的做業: 如計劃任務做業和 Qrocmail 的工做,即便是那些在遠程機器上運行的計劃任務。 Jenkins 生成這些日誌而且很容易讓你注意到錯誤的出現。實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。[1]

1.十一、jenkins的工做步驟

典型的工做流包括如下幾個步驟:[7]

  1. 開發
  2. 提交
  3. 編譯
  4. 測試
  5. 發佈

有了Jenkins的幫助,除了第1步,後續的4步都是自動化完成的。具體的,當你完成了提交,Jenkins會自動運行你的編譯腳本,編譯成功後,再運行你的測試腳本,這一步成功後,接着它會幫你把新程序發佈出去,特別的,在最後一步,你能夠選擇手動發佈,或自動發佈,畢竟發佈這件事情,仍是須要人爲的確認一下比較好。

 

2、安裝[8]


CentOS系統下用rpm包安裝方式進行啓動

2.1 安裝準備

軟件 版本 說明
JDK 1.7.0_76 解壓安裝,注意設置好環境變量
ant 1.9.9 JDK1.7.x只能安裝1.9.x系列ant
Jenkins 2.33 JDK1.7.x只能安裝Jenkins2.3.x系列Jenkins

2.2 安裝ant

ant是基於java的一款構建工具,經過配置build.xml,讓項目能夠進行編譯、部署、打包。由於咱們要實現自動構建,因此首先要安裝ant。
  • wget http://www-eu.apache.org/dist/ant/binaries/apache-ant-1.10.3-bin.tar.gz  ==>http://ant.apache.org 上下載tar.gzant
  • tar -zxvf apache-ant-1.10.3-bin.tar.gz  ==>解壓tar包
  • su -  ==>切換爲root賬號
  • cp -r /home/`whoami`/apache-ant-1.10.3 /usr/share  ==>移動到/usr/share
  • cd /usr/share  ==>切換到/usr/share目錄下,重命名
  • mv apache-ant-1.10.3 ant
  • ANT_HOME=/usr/share/ant  ==>配置環境變量
  • PATH="$PATH":"$ANT_HOME"/bin
  • ant -version   ==》測試ant是否生效
出現以下提示便表示安裝成功。
ant的使用查看這篇文章:ant在持續集成的應用
 
2.3 卸載及安裝jenkins

2.3.1 卸載原來安裝的rpm包

  首先查看是否已經安裝過jenkins
rpm -qa|grep jenkins
   我這裏用的是jdk1.7,因此下載版本http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm(jenkins下載地址:http://pkg.jenkins-ci.org/redhat/),
   原先如今2.5版本以上,版本過高,啓動報「java.lang.UnsupportedClassVersionError」錯,因此要卸載以前安裝的jenkins-2.54-1.1.noarch,使用以下命令
# 卸載原先高版本的jenkins
rpm -e nodeps jenkins-2.54-1.1.noarch

2.3.2 安裝jenkins

# 下載jenkins-2.33-1.1.noarch.rpm
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm
#安裝jenkins-2.33-1.1.noarch.rpm
sudo rpm -ih jenkins-2.33-1.1.noarch.rpm
出現以下圖
表示安裝成功,安裝成功會自動生成下面文件: 
/usr/lib/jenkins/jenkins.war            #WAR包 
/etc/sysconfig/jenkins                  #配置文件
/var/lib/jenkins/                       #默認的JENKINS_HOME目錄
/var/log/jenkins/jenkins.log            #Jenkins日誌文件

2.4 啓動

啓動用以下命令:
sudo service jenkins start
 報了以下錯誤:會報這個錯誤,這是因爲沒有配置java環境,有兩種方法能夠解決:

2.4.1 安裝jdk環境

  先檢查一下java虛擬機有沒有安裝,若是沒有就安裝
java -version

2.4.2 在jenkins配置文件中配置

  須要「vi /etc/init.d/jenkins」,把jdk路徑加上,以下:
複製代碼
# Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins.
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/home/lutong/soft/jdk1.7.0_76/bin/java "
for candidate in $candidates
do
  [ -x "$JENKINS_JAVA_CMD" ] && break
  JENKINS_JAVA_CMD="$candidate"
done

JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"
PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"
複製代碼
上述配置文件中紅色加粗字體的內容是我配置本身的jdk路徑。因爲個人系統中的java是本身解壓安裝的,因此我採用了第二種方式再次啓動jenkins: 

3、默認配置修改及初始化

3.1 修改配置文件

上面咱們有提到配置文件是/etc/sysconfig/jenkins,修改以下兩項配置(根據實際須要設置)
#修改成18080,默認是8080
JENKINS_PORT="18080"
#內存設置,我這裏設置成以下配置
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m"

3.2 初始化

  • 在瀏覽器中輸入http://localhost:8090(默認是使用8080端口)
打開jenkins的後臺控制頁面初始化成功後會自動生成一個管理員密碼放到指定位置,根據頁面提示覆制密碼粘貼到輸入框就能夠登陸了

3.3 初始化安裝插件

  • 登陸成功後回讓你選擇插件的安裝,能夠選擇建議的安裝也能夠本身進行選擇,不清楚的話可使用建議的安裝
  • 因爲建議安裝的插件比較多,安裝的過程有點慢,多等待一會
  •  
  • 安裝的過程也可能由於網絡等一些緣由安裝會失敗,如今能夠無視它,點擊Continue,後面再進行手動的安裝

  • 安裝完成
  • 安裝完成後最好新建立一個管理員帳戶代替以前的臨時自動生成的密碼帳戶
  • 建立新的管理員帳戶
  • 初始化完成,進入後臺管理界面
     
    初始化完成


    後臺管理界面

    3.4 初始化配置

    3.4.1 修改工做空間

    從主頁面直接到「系統管理>系統配置」,點擊右邊「高級」按鈕
    工做空間目錄」直接修改默認工做空間目錄爲自定義的/home/jenkins/workspace/${ITEM_FULLNAME},以下圖: 

    3.4.2 全局配置ant

    從主頁面直接到「系統管理>Global Tool Configuration」,點擊右邊「Ant安裝」按鈕,
    在name中填入名字,能夠本身取,這裏我填寫成ant(到時Invoke Ant時,須要選擇ant),ANT_HOME填入Ant的環境變量
      
     
    3.4.3 全局配置JDK從主頁面直接到「系統管理>Global Tool Configuration」,點擊右邊「JDK安裝」按鈕,
       
    在name中填入名字,能夠本身取,這裏我填寫成ant(到時Invoke Ant時,須要選擇ant),ANT_HOME填入Ant的環境變量

    3.4.4 配置Credentials

    這裏主要是添加信任證書,由於個人工程的源碼是放在SVN上,因此在這裏咱們就是要添加SVN的驗證,即SVN的用戶名和密碼。從主頁面左邊菜單點擊到「Credentials」,進入到 Credentials列表,如圖所示:
     
    點擊Name列中便可對Credentials中用戶進行修改、新增、刪除操做,以下圖所示:
     
    修改完後,點擊下面「Save」保存按鈕便可 

 

4、創建 Jenkins 自動化持續集成項目

4.1 安裝插件

4.1.1 經常使用插件

  通常狀況下,常使用到以下這些插件:
  • FindBugs Plug-in: 是一個靜態分析工具,它檢查類或者 JAR 文件,將字節碼與一組缺陷模式進行對 比以發現可能的問題。
  • Checkstyle Plug-in:是一個靜態分析工具,檢查Java程序代碼。
  • Deploy to container Plugin:用於構建項目後,自動發佈war包從新部署的插件
  • SSH Plugin:這個插件使用 SSH 協議執行遠程 shell 命令。
  • Multijob Plugin:這個插件是一個將多個項目鏈接在一塊兒的插件。

4.1.2 安裝步驟

  下面以安裝Checkstyle插件爲例進行說明:在左上角「系統管理」中往下拉,找到「管理插件」點擊進去就能夠查看和管理全部的插件,點擊「可選插件」顯示全部jenkins支持的插件,在右上角的「過濾」輸入框中,輸入須要安裝的插件名就能夠篩選查找到想要的插件
  而後切換到「可選插件」,在右上角「過濾」框中輸入checkstyle,查詢結果以下
 
而後,點擊「直接安裝」按鈕,其餘插件也是這樣的安裝方式!
 
 
 
 
Jenkins啓動 [6]
首先保證系統中已經安裝了jdk,最好是jdk1.5以上。
第一種啓動方法:
  • 切換到jenkins.jar存放的目錄,輸入以下命令:
  • $ java -jar jenkins.war
  • 若是須要修改端口可使用以下命令:
  • $ java -jar jenkins.war--httpPort=8081
  • 而後在瀏覽器中(推薦用火狐)輸入localhost:8080,localhost能夠是本機的ip,也能夠是計算機名。就能夠打開jenkins。
第二種方法是用tomcat打開
  • 解壓tomcat到某個目錄,如/usr/local,進入tomcat下的/bin目錄,啓動tomcat
  • 將jenkins.war文件放入tomcat下的webapps目錄下,啓動tomcat時,會自動在webapps目錄下創建jenkins目錄,在地址欄上須要輸入localhost:8080/jenkins。

Jenkins 的安裝很是簡單,只須要從 Jenkins 的主頁上下載最新的 jenkins.war 文件而後運行java -jar jenkins.war。同時,還能夠點擊 Jenkins 頁面上的 launch 按鈕完成下載和運行 Jenkins。[1]

 

 參考文獻:

[1] 百度文庫 Jenkins簡介 https://wenku.baidu.com/view/c3d9c739f02d2af90242a8956bec0975f465a40e.html

[2]  testclass.net網 http://www.testclass.net/jenkins/

[3] 紅黑聯盟 [jenkins工具]之一:持續集成和jenkins入門介紹 https://www.2cto.com/kf/201609/544550.html

[4] W3Cschool Jenkins  https://www.w3cschool.cn/jenkins/

[5] 中小型研發團隊架構實踐:高效率、低風險,一鍵發佈並測試的持續集成工具Jenkins http://www.infoq.com/cn/articles/architecture-practice-11-jenkins

[6] 百度百科 https://baike.baidu.com/item/Jenkins/10917210?fr=aladdin

[7] 簡書 Jenkins使用簡易教程 https://www.jianshu.com/p/b524b151d35f

[8] 使用jenkins實現持續集成 https://www.cnblogs.com/zishengY/p/7170656.html

相關文章
相關標籤/搜索