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 一個代碼存儲庫,即需要版本控制軟件來保障代碼的可維護性,同時作爲構建過程的素材庫,例如:SVN、Git代碼庫
l 一個jenkins持續集成服務器就是一個配置簡單和使用方便的持續集成服務
1.4. 持續集成的意義
l 持續集成中的任何一個環節都是自動化完成的,無需太多的人工干預,有利於減少重複的操作過程,可以節省時間、費用和工作量。
l 持續集成保障了每個時間點上團隊成員提交的代碼是能成功集成的。任何時間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能。
l 持續集成還能利於軟件本身的發展趨勢,這點在需求不明確或是頻繁性變更的情景中尤其重要,持續集成的質量能幫助團隊進行有效決策,同時建立團隊對開發產品的信心。
l 對開發人員:寫好代碼,不需要自己進行源碼編譯、打包等工作,直接將代碼分支存放在SVN、Git倉庫即可。
l 對運維人員:減輕人工干預的錯誤率,同時解放運維人員繁雜的上傳代碼、手動備份、更新。
l 對測試人員:可以通過jenkins進行簡單的代碼及網站測試。
1.5. 產品發佈流程
產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發佈上線
Ø 傳統上線流程:
Ø 自動化上線流程:
Ø Jenkins上線流程:
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 下載Jdk、tomcat、Jenkins、maven
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 方法1:WAR包 直接啓動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 方法2:RPM包yum安裝 【不推薦yum安裝】
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
yum –y install Jenkins
service jenkins start或systemctl start jenkins
RPM包rpm安裝
# 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上安裝插件。
l 完成必備的插件
l 安裝可選插件
Maven Integration plugin
Subversion Plug-in
2.4. 配置Jenkins
l jdk/maven
瀏覽器登錄Jenkins,進入“系統管理” -> “Global Tool Configuration”,配置jdk和maven後保存:
2.5. 服務啓動
l
執行java -jar jenkins.war --httpPort=8099
l 執行systemctl start jenkins
3. Jenkins自動構建
l 創建一個maven項目
l 新建的任務頁面,點擊“立即構建
丟棄舊的構建:
保持構建的天數 【超過一定天數就刪除】
保持構建的最大個數 【超過一定數量就刪除】
填寫svn信息
填寫maven參數
4. Jenkins自動部署
1)配置tomcat服務器基線
2)tomcat版本路徑統一
3)jdk版本路徑統一
4)項目名與端口號統一
5. Jenkins權限管理
在工作的過程中由於分工合作,因爲工作內容的不同可能分爲不同的組織裏,但是jenkins默認的權限管理並沒有用戶組的概念,所以我們需要第三方插件的支持來解決問題。
注意:切換不同管理權限的方式 這個插件會導至以前配置好的權限丟失,所以可以用備份來彌補。
jenkins權限管理,實現不同用戶組顯示對應視圖views中不同的jobs
l 安裝Role Strategy Plugin插件
注意:
1)job_read只加Overall的Read權限
2)job_create只加job的create權限
3)project roles中Pattern正則表達式跟腳本里的不一樣,比如過濾TEST開頭的jobs,要寫成TEST.*而不是TEST*
按環境或項目將權限分組,再將用戶劃分到對應的權限即可。如下圖所示
l 設置全局角色(全局角色可以對jenkins系統進行設置與項目的操作)
l 設置項目角色(項目角色只能對項目進行操作)
開發人員只能看到所屬自己的項目
管理員可以看到全部項目信息
6. jenkins常見問題
問題1:jenkins 配置安全策略admin沒有Overall/Read權限
解決方案:
命令:vim /root/.jenkins/config.xml
<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服務
問題2:admin密碼更改後忘記
解決方案:
刪除Jenkins目錄下config.xml文件中下面代碼,並保存文件。