1. 簡(jiǎn)介Jenkins是一個(gè)開(kāi)源軟件項(xiàng)目。在企業(yè)的軟件構(gòu)建過(guò)程中,,JAVA的應(yīng)用工程稍顯復(fù)雜,,由于復(fù)雜構(gòu)建、和代碼上線,、并且服務(wù)的重啟,。整個(gè)過(guò)程下來(lái),消耗的時(shí)間較多,,Jenkins卻能很好的集成maven的編譯方式,,且利用自動(dòng)化的插件,、和自定義開(kāi)發(fā)腳本的支持,所以目前廣泛的應(yīng)用于JAVA工程的持續(xù)集成平臺(tái),。 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 什么是集成 指的是代碼由編譯,、發(fā)布和測(cè)試、直到上線的一個(gè)過(guò)程 l 什么持續(xù)集成 高效的,、持續(xù)性質(zhì)的不斷迭代代碼的集成工作 l 如何高效準(zhǔn)確的實(shí)現(xiàn)持續(xù)集成 必不可少的需要一套能自動(dòng)化,、并且可視化的平臺(tái)來(lái)幫助我們。 那么總結(jié)來(lái)看,,Jenkins就是一個(gè)可以幫助我們實(shí)現(xiàn)持續(xù)集成的平臺(tái),。
Jenkins的缺點(diǎn): Jenkins是開(kāi)發(fā)人員開(kāi)發(fā)得,沒(méi)有照顧到運(yùn)維人員得感受,。CMDB得對(duì)接是Jenkins得短板,。 1.1. 名稱解釋l 持續(xù)集成 (Continuous integration,簡(jiǎn)稱CI) l 持續(xù)交付(Continuous delivery) l 持續(xù)部署(continuous deployment) 1.2. Jenkins目的l 持續(xù),、自動(dòng)地構(gòu)建/測(cè)試軟件項(xiàng)目,。 l 監(jiān)控軟件開(kāi)放流程,快速問(wèn)題定位及處理,,提示開(kāi)放效率,。 1.3. 持續(xù)集成組件l 一個(gè)自動(dòng)構(gòu)建過(guò)程,包括自動(dòng)編譯,、分發(fā),、部署和測(cè)試 l 一個(gè)代碼存儲(chǔ)庫(kù),即需要版本控制軟件來(lái)保障代碼的可維護(hù)性,,同時(shí)作為構(gòu)建過(guò)程的素材庫(kù),,例如:SVN、Git代碼庫(kù) l 一個(gè)jenkins持續(xù)集成服務(wù)器就是一個(gè)配置簡(jiǎn)單和使用方便的持續(xù)集成服務(wù) 1.4. 持續(xù)集成的意義l 持續(xù)集成中的任何一個(gè)環(huán)節(jié)都是自動(dòng)化完成的,,無(wú)需太多的人工干預(yù),,有利于減少重復(fù)的操作過(guò)程,可以節(jié)省時(shí)間,、費(fèi)用和工作量,。 l 持續(xù)集成保障了每個(gè)時(shí)間點(diǎn)上團(tuán)隊(duì)成員提交的代碼是能成功集成的。任何時(shí)間點(diǎn)都能第一時(shí)間發(fā)現(xiàn)軟件的集成問(wèn)題,,使任意時(shí)間發(fā)布可部署的軟件成為了可能,。 l 持續(xù)集成還能利于軟件本身的發(fā)展趨勢(shì),這點(diǎn)在需求不明確或是頻繁性變更的情景中尤其重要,,持續(xù)集成的質(zhì)量能幫助團(tuán)隊(duì)進(jìn)行有效決策,,同時(shí)建立團(tuán)隊(duì)對(duì)開(kāi)發(fā)產(chǎn)品的信心。 l 對(duì)開(kāi)發(fā)人員:寫(xiě)好代碼,不需要自己進(jìn)行源碼編譯,、打包等工作,,直接將代碼分支存放在SVN、Git倉(cāng)庫(kù)即可,。 l 對(duì)運(yùn)維人員:減輕人工干預(yù)的錯(cuò)誤率,,同時(shí)解放運(yùn)維人員繁雜的上傳代碼、手動(dòng)備份,、更新,。 l 對(duì)測(cè)試人員:可以通過(guò)jenkins進(jìn)行簡(jiǎn)單的代碼及網(wǎng)站測(cè)試。 1.5. 產(chǎn)品發(fā)布流程產(chǎn)品設(shè)計(jì)成型 -> 開(kāi)發(fā)人員開(kāi)發(fā)代碼 -> 測(cè)試人員測(cè)試功能 -> 運(yùn)維人員發(fā)布上線 ? 傳統(tǒng)上線流程:
? 自動(dòng)化上線流程: ? Jenkins上線流程: 1.1. 硬件要求l 標(biāo)準(zhǔn)配置: CPU: 8核心2.0GHz 內(nèi)存: 16GB 硬盤: 100GB 網(wǎng)卡: 2*1000Mbps l 最低配置: CPU: 4核心2.0GHz 內(nèi)存: 4GB 硬盤: 50GB 網(wǎng)卡: 100Mbps 1.2. 系統(tǒng)要求Linux l CentOS 6.9 l CentOS 7.4 JDK l JDK 1.8 1.3. 網(wǎng)絡(luò)要求l 準(zhǔn)備一個(gè)塊網(wǎng)卡支持千兆 2. Jenkins 安裝2.1. 準(zhǔn)備環(huán)境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 測(cè)試一下 # 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 測(cè)試一下 # mvn -v 2.2. 安裝Jenkinsl 方法1:WAR包 直接啟動(dòng)war包 wget http://mirrors./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./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穩(wěn)定版】 # 官方下載地址:https://pkg./redhat-stable/ # 國(guó)內(nèi)下載地址:https://mirrors.tuna./jenkins/redhat-stable/
如果是公司使用選擇(LTS) stable穩(wěn)定版,。 如果是個(gè)人使用可以選擇最新版 2.3. 安裝插件說(shuō)明: 安裝Maven程序是為了編譯代碼打包代碼,,調(diào)用方法是Jenkins通過(guò)Maven插件調(diào)用Maven服務(wù)。所以想使用相關(guān)服務(wù)除了本地部署服務(wù)外,,還需要在jenkins上安裝插件,。 l 完成必備的插件 l 安裝可選插件 Maven Integration plugin Subversion Plug-in 2.4. 配置Jenkinsl jdk/maven 瀏覽器登錄Jenkins,進(jìn)入“系統(tǒng)管理” -> “Global Tool Configuration”,,配置jdk和maven后保存:
2.5. 服務(wù)啟動(dòng)
l 執(zhí)行 3. Jenkins自動(dòng)構(gòu)建l 創(chuàng)建一個(gè)maven項(xiàng)目 l 新建的任務(wù)頁(yè)面,,點(diǎn)擊“立即構(gòu)建 丟棄舊的構(gòu)建: 保持構(gòu)建的天數(shù) 【超過(guò)一定天數(shù)就刪除】 保持構(gòu)建的最大個(gè)數(shù) 【超過(guò)一定數(shù)量就刪除】 填寫(xiě)svn信息
填寫(xiě)maven參數(shù)
4. Jenkins自動(dòng)部署1)配置tomcat服務(wù)器基線 2)tomcat版本路徑統(tǒng)一 3)jdk版本路徑統(tǒng)一 4)項(xiàng)目名與端口號(hào)統(tǒng)一
5. Jenkins權(quán)限管理在工作的過(guò)程中由于分工合作,因?yàn)楣ぷ鲀?nèi)容的不同可能分為不同的組織里,,但是jenkins默認(rèn)的權(quán)限管理并沒(méi)有用戶組的概念,,所以我們需要第三方插件的支持來(lái)解決問(wèn)題。 注意:切換不同管理權(quán)限的方式 這個(gè)插件會(huì)導(dǎo)至以前配置好的權(quán)限丟失,,所以可以用備份來(lái)彌補(bǔ),。 jenkins權(quán)限管理,實(shí)現(xiàn)不同用戶組顯示對(duì)應(yīng)視圖views中不同的jobs l 安裝Role Strategy Plugin插件
注意: 1)job_read只加Overall的Read權(quán)限 2)job_create只加job的create權(quán)限 3)project roles中Pattern正則表達(dá)式跟腳本里的不一樣,,比如過(guò)濾TEST開(kāi)頭的jobs,,要寫(xiě)成TEST.*而不是TEST*
按環(huán)境或項(xiàng)目將權(quán)限分組,再將用戶劃分到對(duì)應(yīng)的權(quán)限即可,。如下圖所示
l 設(shè)置全局角色(全局角色可以對(duì)jenkins系統(tǒng)進(jìn)行設(shè)置與項(xiàng)目的操作) l 設(shè)置項(xiàng)目角色(項(xiàng)目角色只能對(duì)項(xiàng)目進(jìn)行操作) 開(kāi)發(fā)人員只能看到所屬自己的項(xiàng)目
管理員可以看到全部項(xiàng)目信息
6. jenkins常見(jiàn)問(wèn)題問(wèn)題1:jenkins 配置安全策略admin沒(méi)有Overall/Read權(quán)限 解決方案: 命令: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服務(wù)
問(wèn)題2:admin密碼更改后忘記 解決方案: 刪除Jenkins目錄下config.xml文件中下面代碼,,并保存文件。
|
|
來(lái)自: 印度阿三17 > 《開(kāi)發(fā)》