Jenkins研究

Jenkins研究

1.   簡介

Jenkins是一個開源軟件項目。在企業的軟件構建過程中,JAVA的應用工程稍顯複雜,由於複雜構建、和代碼上線、並且服務的重啓。整個過程下來,消耗的時間較多,Jenkins卻能很好的集成maven的編譯方式,且利用自動化的插件、和自定義開發腳本的支持,所以目前廣泛的應用於JAVA工程的持續集成平臺。

Jenkins is an automation engine with an unparalleled plugin ecosystem to support all of your favorite tools in your delivery pipelines, whether your goal is continuous integration, automated testing, or continuous delivery.


l  什麼是集成

指的是代碼由編譯、發佈和測試、直到上線的一個過程

l  什麼持續集成

高效的、持續性質的不斷迭代代碼的集成工作

l  如何高效準確的實現持續集成

必不可少的需要一套能自動化、並且可視化的平臺來幫助我們。

那麼總結來看,Jenkins就是一個可以幫助我們實現持續集成的平臺。

 

Jenkins的缺點:

Jenkins是開發人員開發得,沒有照顧到運維人員得感受。CMDB得對接是Jenkins得短板。


1.1.  名稱解釋

l  持續集成 Continuous integration簡稱CI

l  持續交付(Continuous delivery

l  持續部署(continuous deployment

1.2.  Jenkins目的

l  持續、自動地構建/測試軟件項目。

l  監控軟件開放流程,快速問題定位及處理,提示開放效率。

1.3.  持續集成組件

l  一個自動構建過程,包括自動編譯、分發、部署和測試

l  一個代碼存儲庫,即需要版本控制軟件來保障代碼的可維護性,同時作爲構建過程的素材庫,例如:SVNGit代碼庫

l  一個jenkins持續集成服務器就是一個配置簡單和使用方便的持續集成服務

1.4.  持續集成的意義

l  持續集成中的任何一個環節都是自動化完成的,無需太多的人工干預,有利於減少重複的操作過程,可以節省時間、費用和工作量。

l  持續集成保障了每個時間點上團隊成員提交的代碼是能成功集成的。任何時間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能。

l  持續集成還能利於軟件本身的發展趨勢,這點在需求不明確或是頻繁性變更的情景中尤其重要,持續集成的質量能幫助團隊進行有效決策,同時建立團隊對開發產品的信心。

l  對開發人員:寫好代碼,不需要自己進行源碼編譯、打包等工作,直接將代碼分支存放在SVNGit倉庫即可。

l  對運維人員:減輕人工干預的錯誤率,同時解放運維人員繁雜的上傳代碼、手動備份、更新。

l  對測試人員:可以通過jenkins進行簡單的代碼及網站測試。

1.5.  產品發佈流程

產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發佈上線

Ø  傳統上線流程:

11.png

 

Ø  自動化上線流程:

111.png

Ø  Jenkins上線流程:

11111.png


1.1.  硬件要求

        l  標準配置:

        CPU      8核心2.0GHz

        內存:     16GB

        硬盤:     100GB

        網卡:     2*1000Mbps

        l  最低配置:

        CPU      4核心2.0GHz

        內存:     4GB

        硬盤:     50GB

        網卡:     100Mbps

1.2.  系統要求

        Linux

        l  CentOS 6.9

        l  CentOS 7.4

        JDK

        l  JDK 1.8

1.3.  網絡要求

l  準備一個塊網卡支持千兆

2.   Jenkins 安裝

2.1.  準備環境

l  下載JdktomcatJenkinsmaven

l  安裝Jdk

                # tar -xf jdk-8u181-linux-x64.tar.gz –C /usr/local/

                # vim /etc/profile

                export JAVA_HOME=/usr/local/java/jdk1.8.0_181

                export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/tools.jar

                export PATH=$JAVA_HOME/bin:$PATH

                # source /etc/profie

                測試一下

                # java -version

l  安裝tomcat

                # tar -xf apache-tomcat-7.0.90.tar.gz -C /opt

l  安裝maven

                # tar zxvf apache-maven-3.5.4-bin.tar.gz

                # vim /etc/profile

                export M2_HOME=/usr/local/apache-maven-3.5.4

                export PATH=$M2_HOME/bin:$PATH

                # source /etc/profie

                測試一下

                # mvn -v

2.2.  安裝Jenkins

l  方法1WAR 直接啓動war

                wget http://mirrors.shu.edu.cn/jenkins/war-stable/2.121.3/jenkins.war

                java -jar jenkins.war --httpPort=8088

tomcat+WAR

                cp jenkins.war /usr/local/apache-tomcat-7.0.90/webapps/ROOT

                /usr/local/apache-tomcat-7.0.90/bin/startup.sh

 

l  方法2RPMyum安裝 【不推薦yum安裝】

                wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo

                yum –y install Jenkins

                service jenkins startsystemctl start jenkins

RPMrpm安裝

                # rpm -ivh jenkins-2.32.3-1.1.noarch.rpm

                # 下載地址:【選擇redhat-stable穩定版】

                # 官方下載地址:https://pkg.jenkins.io/redhat-stable/

                # 國內下載地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/

 

如果是公司使用選擇(LTS) stable穩定版。

如果是個人使用可以選擇最新版



2.3.  安裝插件

說明:

安裝Maven程序是爲了編譯代碼打包代碼,調用方法是Jenkins通過Maven插件調用Maven服務。所以想使用相關服務除了本地部署服務外,還需要在jenkins上安裝插件。

2222.png



l  完成必備的插件

l  安裝可選插件

Maven Integration plugin

Subversion Plug-in

image.png

2.4.  配置Jenkins

l  jdk/maven

瀏覽器登錄Jenkins,進入系統管理” -> “Global Tool Configuration”,配置jdkmaven後保存:

 image.png

image.png


2.5.  服務啓動

l  執行java -jar jenkins.war --httpPort=8099

l  執行systemctl start jenkins

3.   Jenkins自動構建

l  創建一個maven項目

image.png


l  新建的任務頁面,點擊立即構建

image.png

image.png


        丟棄舊的構建:

        保持構建的天數 【超過一定天數就刪除】

        保持構建的最大個數 【超過一定數量就刪除】

        填寫svn信息

   image.png

   填寫maven參數

   image.png


4.   Jenkins自動部署

        1)配置tomcat服務器基線

        2tomcat版本路徑統一

        3jdk版本路徑統一

        4)項目名與端口號統一

   image.png


5.   Jenkins權限管理

在工作的過程中由於分工合作,因爲工作內容的不同可能分爲不同的組織裏,但是jenkins默認的權限管理並沒有用戶組的概念,所以我們需要第三方插件的支持來解決問題。

注意:切換不同管理權限的方式 這個插件會導至以前配置好的權限丟失,所以可以用備份來彌補。


jenkins權限管理,實現不同用戶組顯示對應視圖views中不同的jobs

l  安裝Role Strategy Plugin插件

image.png

image.png

        

        注意:

        1job_read只加OverallRead權限

        2job_create只加jobcreate權限

        3project rolesPattern正則表達式跟腳本里的不一樣,比如過濾TEST開頭的jobs,要寫成TEST.*而不是TEST*

         

        按環境或項目將權限分組,再將用戶劃分到對應的權限即可。如下圖所示

   image.png

l  設置全局角色(全局角色可以對jenkins系統進行設置與項目的操作)

image.png


l  設置項目角色(項目角色只能對項目進行操作)

image.png

  開發人員只能看到所屬自己的項目

  image.png

  管理員可以看到全部項目信息

  image.png

6.   jenkins常見問題

        問題1jenkins 配置安全策略admin沒有Overall/Read權限

        解決方案:

        命令:vim /root/.jenkins/config.xml

   image.png

        <permission>hudson.model.Hudson.Administer:anonymous</permission>

        <permission>hudson.model.Hudson.ConfigureUpdateCenter:anonymous</permission>

        <permission>hudson.model.Hudson.Read:anonymous</permission>

        <permission>hudson.model.Hudson.RunScripts:anonymous</permission>

        <permission>hudson.model.Hudson.UploadPlugins:anonymous</permission>

        重啓jenkins服務

         

        問題2admin密碼更改後忘記

        解決方案:

        刪除Jenkins目錄下config.xml文件中下面代碼,並保存文件。

   image.png















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章