Jenkinsjava
Jenkins是一個開源軟件項目。在企業的軟件構建過程當中,JAVA的應用工程稍顯複雜,因爲複雜構建、和代碼上線、而且服務的重啓。整個過程下來,消耗的時間較多,Jenkins卻能很好的集成maven的編譯方式,且利用自動化的插件、和自定義開發腳本的支持,因此目前普遍的應用於JAVA工程的持續集成平臺。linux
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.web
什麼是集成正則表達式
指的是代碼由編譯、發佈和測試、直到上線的一個過程apache
什麼持續集成vim
高效的、持續性質的不斷迭代代碼的集成工做瀏覽器
如何高效準確的實現持續集成tomcat
必不可少的須要一套能自動化、而且可視化的平臺來幫助咱們。安全
那麼總結來看,Jenkins就是一個能夠幫助咱們實現持續集成的平臺。服務器
Jenkins的缺點:
Jenkins是開發人員開發得,沒有照顧到運維人員得感覺。CMDB得對接是Jenkins得短板。
持續集成 (Continuous integration,簡稱CI)
持續交付(Continuous delivery)
持續部署(continuous deployment)
持續、自動地構建/測試軟件項目。
監控軟件開放流程,快速問題定位及處理,提示開放效率。
一個自動構建過程,包括自動編譯、分發、部署和測試
一個代碼存儲庫,即須要版本控制軟件來保障代碼的可維護性,同時做爲構建過程的素材庫,例如:SVN、Git代碼庫
一個jenkins持續集成服務器就是一個配置簡單和使用方便的持續集成服務
持續集成中的任何一個環節都是自動化完成的,無需太多的人工干預,有利於減小重複的操做過程,能夠節省時間、費用和工做量。
持續集成保障了每一個時間點上團隊成員提交的代碼是能成功集成的。任什麼時候間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能。
持續集成還能利於軟件自己的發展趨勢,這點在需求不明確或是頻繁性變動的情景中尤爲重要,持續集成的質量能幫助團隊進行有效決策,同時創建團隊對開發產品的信心。
對開發人員:寫好代碼,不須要本身進行源碼編譯、打包等工做,直接將代碼分支存放在SVN、Git倉庫便可。
對運維人員:減輕人工干預的錯誤率,同時解放運維人員繁雜的上傳代碼、手動備份、更新。
對測試人員:能夠經過jenkins進行簡單的代碼及網站測試。
產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發佈上線
Ø 傳統上線流程:
Ø 自動化上線流程:
Ø Jenkins上線流程:
標準配置:
CPU: 8核心2.0GHz
內存: 16GB
硬盤: 100GB
網卡: 2*1000Mbps
最低配置:
CPU: 4核心2.0GHz
內存: 4GB
硬盤: 50GB
網卡: 100Mbps
Linux
CentOS 6.9
CentOS 7.4
JDK
JDK 1.8
準備一個塊網卡支持千兆
下載Jdk、tomcat、Jenkins、maven
安裝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
安裝tomcat
# tar -xf apache-tomcat-7.0.90.tar.gz -C /opt
安裝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
方法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
方法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穩定版。
若是是我的使用能夠選擇最新版
說明:
安裝Maven程序是爲了編譯代碼打包代碼,調用方法是Jenkins經過Maven插件調用Maven服務。因此想使用相關服務除了本地部署服務外,還須要在jenkins上安裝插件。
安裝必備插件
安裝可選插件
Maven Integration plugin
Subversion Plug-in
瀏覽器登陸Jenkins,進入「系統管理」 -> 「Global Tool Configuration」,配置jdk和maven後保存:
執行
java -jar jenkins.war --httpPort=8099
執行
systemctl start jenkins
建立一個maven項目
新建的任務頁面,點擊「當即構建
丟棄舊的構建:
保持構建的天數 【超過必定天數就刪除】
保持構建的最大個數 【超過必定數量就刪除】
填寫svn信息
填寫maven參數
1)配置tomcat服務器基線
2)tomcat版本路徑統一
3)jdk版本路徑統一
4)項目名與端口號統一
在工做的過程當中因爲分工合做,由於工做內容的不一樣可能分爲不一樣的組織裏,可是jenkins默認的權限管理並無用戶組的概念,因此咱們須要第三方插件的支持來解決問題。
注意:切換不一樣管理權限的方式 這個插件會導至之前配置好的權限丟失,因此能夠用備份來彌補。
jenkins權限管理,實現不一樣用戶組顯示對應視圖views中不一樣的jobs
安裝Role Strategy Plugin插件
注意:
1)job_read只加Overall的Read權限
2)job_create只加job的create權限
3)project roles中Pattern正則表達式跟腳本里的不同,好比過濾TEST開頭的jobs,要寫成TEST.*而不是TEST*
按環境或項目將權限分組,再將用戶劃分到對應的權限便可。以下圖所示
設置全局角色(全局角色能夠對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文件中下面代碼,並保存文件。