Jenkins安裝配置,專案釋出、管理詳解,史上最清晰,值得收藏!
一、導語
Jenkins 是一個可擴充套件的持續整合引擎。接下來,我將通過兩篇文章來全面介紹jenkins的基本概念,安裝、配置、自動構建、監控、部署,以及在生產環境的高階應用。
方便讀者更好的理解,本文演示案例所使用的原始碼和指令碼,均提供git下載地址。
https://github.com/wzjgn/xinwei-example.git
原始碼基於spring boot框架,maven管理,wrapper啟動。
二、Jenkins 介紹
主要用途:
1、持續、自動地構建/測試軟體專案。
2、監控一些定時執行的任務。
Jenkins特性:
1、易於安裝-本文提供四種配置方式。
2、易於配置-所有配置都是通過其提供的web介面實現。
3、整合RSS/E-mail通過RSS釋出構建結果或當構建完成時通過e-mail通知。
4、生成JUnit/TestNG測試報告。
5、分散式構建支援Jenkins能夠讓多臺計算機一起構建/測試。
6、檔案識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
7、外掛支援:支援擴充套件外掛,你可以開發適合自己團隊使用的工具。
8、Jenkins一切配置都可以在web介面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的專案就都能用。當然也可以通過修改XML進行配置。
9、支援Maven的模組(Module),Jenkins對Maven做了優化,因此它能自動識別Module,每個Module可以配置成一個job。相當靈活。
10、測試報告聚合,所有模組的測試報告都被聚合在一起,結果一目瞭然,使用其他CI,這幾乎是件不可能完成的任務。
11、構件指紋(artifact fingerprint),每次build的結果構件都被很好的自動管理,無需任何配置就可以方便的瀏覽下載。
三、基礎環境準備
本文對Jenkins的講解,基於 jdk1.8,maven,git,ssh 做自動構建、部署等功能演示。
3.1、JDK安裝:
下載linux jdk-8u11-linux-x64.tar.gz
到甲骨文官網或國內映象下載JDK(www.oracle.com)
解壓:
tar vxf jdk-8u11-linux-x64.tar.gz
配置環境變數:
#set Maven environment vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_11
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
環境變數立即生效
source /etc/profile
3.2、maven安裝:
下載maven
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
解壓
tar xzvf apache-maven-3.5.2-bin.tar.gz
mv apache-maven-3.5.2 /usr/local/maven3
配置環境變數
#set Maven environment vi /etc/profile
export MAVEN_HOME=/usr/local/maven3
export PATH=${MAVEN_HOME}/bin:${PATH}
環境變數立即生效
source /etc/profile
驗證maven是否配置成功
mvn -v
3.3、git 安裝:
yum -y install git
用git --version命令檢查是否已經安裝
3.4、 從git伺服器下載原始碼 ssh免密配置:
jenkins 構建程式碼時,動態從git原始碼伺服器pull原始碼,免密配置 ssh。
第一步 :生成key
$ ssh-keygen -t rsa -C "you email@email.com" 或者去掉 -t rsa
接下來會提示你輸入一個檔名來儲存你的SSH key ,如果不輸入直接回車,則會儲存在預設的檔案裡id_rsa.pub
然後會提示你輸入passphrases 連續輸入兩次,這在你在網頁中新增SSH key的時候會讓你輸入一次。
以上提示輸入的地方可以為空,敲回車就好。
ssh key預設存放地址:/root/.ssh/
id_rsa.pub:公鑰(用於遠端伺服器)
id_rsa:私鑰
第二步:將公鑰(id_rsa.pub 中的內容)新增的git原始碼伺服器
將公鑰檔案 id_rsa.pub 中的內容拷貝到git原始碼伺服器。以阿里云為例。
驗證:
在存放私鑰的伺服器終端執行如下命令:
ssh -T git@code.aliyun.com
返回 Welcome to GIT, 使用者名稱! 成功
第三步:將私鑰新增到jenkins
建立專案時新增
由於我們在生產key時,預設回車,沒有輸入密碼,所以此處Passphrase為空。
四、Jenkins安裝
以下四種方法任選一種,我本人使用第一種方式。
1、 線上安裝
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key## 公鑰
sudo yum install jenkins -y
2、 離線安裝
## http://pkg.jenkins-ci.org/redhat/
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.39-1.1.noarch.rpm ## 下載(也可以Windows下載再轉過來)
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins.io.key ## 公鑰
sudo yum -y install jenkins-*.noarch.rpm
3、基於 Tomcat 安裝
安裝並啟動 Tomcat;
從官網下載 jenkins.war 至 $CATALINA_BASE/webapps,Tomcat 會自動部署;
瀏覽器訪問:http://centos:8080/jenkins/
4、免安裝方式
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
sudo java -jar jenkens.war ## 啟動服務,直至看到日誌 `Jenkins is fully up and running`
curl http://localhost:8080/ ## Jenkins 已就緒
配置
## sudo vi /etc/sysconfig/jenkins
JENKINS_USER="root" ## 原值 "jenkins" 必須修改,否則許可權不足
JENKINS_PORT="8080" ## 原值 "8080" 可以不修改
## 還有開啟 HTTPS 相關引數,此處不打算開啟,故不作說明
Jenkins安裝目錄: /usr/lib/jenkins
Jenkins工作目錄: /var/lib/jenkins(對應於環境變數 JENKINS_HOME)
構建專案原始碼目錄:/var/lib/jenkins/workspace
日誌預設路徑:/var/log/jenkins/jenkins.log
啟動
sudo systemctl enable jenkins
sudo systemctl restart jenkins
或
service jenkins start
五、Jenkins配置
基本配置
5.1、登入
登入地址:http://localhost:8080/
初始密碼獲取:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
5.2、密碼修改
登入主頁-使用者-選擇使用者(admin)-設定-輸入新密碼
5.3、Jenkins外掛安裝
Jenkins 外掛管理器允許您安裝新的外掛,和更新您Jenkins伺服器上的外掛。管理者將連線到聯機資料庫,檢索可用的和已更新的外掛。如果您的Jenkins伺服器 無法直接連線到外部資源,您可以從Jenkins網站上下載。
在已執行的Jenkins主頁中,點選左側的系統管理—>管理外掛進入如下介面:
安裝外掛:Git plugin,ssh plugin
5.4、JDK、Maven、Git配置
jenkins 構建,依賴JDK、Maven、Git 外掛,因此專案構建前需要對外掛做配置,配置流程如下:
進入 系統管理-全域性工具配置:
Maven別名:使用者自定義,便於標識就可以。
MAVEN_HOME:這個是本機MAVEN的安裝路徑。見上文第二部分 MAVEN安裝。(錯誤的路徑會有紅字提示你的)
自動安裝:不推薦這個選項
上文第二部分git安裝完畢後,此處預設配置完畢
JDK別名:使用者自定義,便於標識就可以。
JDK_HOME:這個是本機JDK的安裝路徑。見上文第二部分 JDK安裝。(錯誤的路徑會有紅字提示你的)
自動安裝:不推薦這個選項
六、原始碼構建、打包、部署、執行
(基於springboot,maven,git,ssh)
6.1、 新建專案
原始碼管理:
Repository URL:
git@github.com:wzjgn/xinwei-example.git
或
https://github.com/wzjgn/xinwei-example.git
如果Repository URL 地址有誤,此處會報錯,如:
Add ,新增原始碼訪問憑證。
本案例通過ssh key 訪問git原始碼伺服器。因此,在此處新增ssh私鑰(ssh公鑰已經部署到github)
(新增ssh私鑰)
本文生成ssh key時,提示輸入密碼時預設回車,因此此處passphrase ,id.填空。
構建觸發器
選擇“Build whenever a SNAPSHOT dependency is built” :依賴於快照的構建,當git有修改時就構建專案。
Build periodically :此選項僅僅通知Jenkins按指定的頻率對專案進行構建,而不管SCM是否有變化。如果想在這個Job中執行一些測試用例的話,它就很有幫助。
Poll SCM :這是CI 系統中常見的選項。當您選擇此選項,您可以指定一個定時作業表示式來定義Jenkins每隔多久檢查一下您原始碼倉庫的變化。如果發現變化,就執行一次構建。例如,表示式中填寫0,15,30,45 * * * *將使Jenkins每隔15分鐘就檢查一次您原始碼倉庫的變化。
構建:
預設Jenkins在workspace目錄下面找到pom.xml檔案。
如下圖專案目錄結構,此處配置執行的是 pom.xml 3,即構建1,2兩個pom.xml對應的專案。
如果要構建 pom.xml 1 則此處 Root POM : xinwei-wrapper-example/pom.xml.
Post Steps
配置構建成功後的動作,新增shell。該案例原始碼是基於springboot架構,wrapper啟動。
相關背景知識請檢視上一篇文章《輕量級微服務啟動wrapper推薦(springboot版,附github原始碼)》
指令碼作用:
1、關閉原應用程式程式
2、解壓新生成的tar包
3、wrapper啟動重構後的應用
指令碼
https://github.com/wzjgn/xinwei-example.git
xinwei-example/script/Post Steps(local)
(本例主要是jenkins的基本應用,故,此處指令碼的意義是在本機做專案部署,啟動。實際應用中,Jenkins通常都是應用在分散式系統,同時分發部署多臺伺服器。下篇Jenkins進階文章將對遠端部署、管理做詳細講解,儘可能接近生產環境)
郵件通知設定
在Recipients中輸入收件人郵件地址,如果用多個收件人用“,”英文逗號隔開。
6.2、構建
手動觸發專案構建流程:
在上面展示的截圖中,您將注意到有兩個圖示描述當前作業的狀態。S欄目代表著“最新構建狀態”,W欄目代表著“構建穩定性”。Jenkins使用這兩個概念來介紹一個作業的總體狀況:
構建狀態:下圖中分級符號概述了一個Job新近一次構建會產生的四種可能的狀態:
Successful:完成構建,且被認為是穩定的。
Unstable:完成構建,但被認為不穩定。
Failed:構建失敗。
Disabled:構建已禁用。
構建狀態介面
構建穩定性: 當一個Job中構建已完成並生成了一個未釋出的目標構件,如果您準備評估此次構建的穩定性,Jenkins會基於一些後處理器任務為構建釋出一個穩健指數 (從0-100 ),這些任務一般以外掛的方式實現。它們可能包括單元測試(JUnit)、覆蓋率(Cobertura )和靜態程式碼分析(FindBugs)。分數越高,表明構建越穩定。下圖中分級符號概述了穩定性的評分範圍。任何構建作業的狀態(總分100)低於80分就是不穩定的。
雙擊上圖 專案名稱,進入該專案的控制檯,如下圖:
在控制檯點選“立即構建”,BuildHistory 列表第一條記錄展示專案當前的構建進度條。點選 “專案構建進度條”,進入監控頁面。檢視構建過程,日誌。
6.3、構建完畢,訪問地址
http://localhost/
七、常見問題彙總
Jenkins預設會在Build結束後Kill掉所有的衍生程式,導致後臺無法執行應用程式。
在Post Steps ->Execute Shell 中配置的應用程式啟動指令碼啟動後,當Build結束,程式會被Jenkins殺掉。為了在退出Build時繼續執行程式,需要進行以下配置,才能避免此類情況發生。
7.1 方式一
a、重設環境變數build_id
在execute shell輸入框中加入BUILD_ID=DONTKILLME,即可防止jenkins殺死啟動的應用程式程式
b、在啟動jenkins 的時候禁止jenkins殺死衍生程式
修改/etc/sysconfig/jenkins配置,在JENKINS_JAVA_OPTIONS中加入-Dhudson.util.ProcessTree.disable=true。需要重啟jenkins生效。此方法配置一次後,所有的job都無需設定BUILD_ID,就能夠防止jenkins殺死啟動的應用程式程式。
7.2、方式二
新增 Post build task外掛,在 Post build task 處執行指令碼。
每當檢測到專案編譯資訊中包含log text中的文字即執行script中的shell指令碼。此處執行指令碼啟動的程式,jenkins不會自動kill。
八、後記
本文主要講解Jenkins的基本應用,後續我會分享一篇Jenkins進階。Jenkins進階主要介紹常用外掛的使用,更接近於生產環境的應用如,多伺服器遠端部署。
感謝閱讀,希望繼續關注。
相關文章
- 史上最清晰易懂的babel配置解析Babel
- jenkins專案釋出Jenkins
- 史上最清晰的「歸併排序」講解排序
- python中yield的用法詳解——最簡單,最清晰的解釋Python
- JENKINS安裝配置Jenkins
- 史上最全 Jenkins Pipeline流水線詳解Jenkins
- Jenkins安裝及配置Jenkins
- 使用jenkins一鍵打包釋出vue專案JenkinsVue
- Jenkins安裝部署使用圖文詳解(非常詳細)Jenkins
- Eclipse安裝教程 ——史上最詳細安裝java &python教程說明 【附視訊安裝演示】EclipseJavaPython
- 史上最強Tableau Server 安裝教程Server
- 釋出nuget 如何配置專案檔案
- 詳解:Flannel安裝與配置
- mysql 5.7配置項最詳細的解釋MySql
- jenkins安裝與配置學習Jenkins
- k8s-jenkins持續釋出tomcat專案K8SJenkinsTomcat
- 史上最快、最強大的 Gradle 5.0 釋出,新特性全解!Gradle
- 2024年專案管理軟體排行榜:哪些工具最值得關注?這11款你應該收藏!專案管理
- Centos7.6下安裝配置JenkinsCentOSJenkins
- 史上最全執行緒池超詳解(建議收藏)執行緒
- Docker的安裝配置及使用詳解Docker
- CentOS7.2編譯安裝PHP7.2.3之史上最詳細步驟。CentOS編譯PHP
- linux(centos 7)下安裝JDK,Tomcat,mysql 執行Maven 專案(最詳細)LinuxCentOSJDKTomcatMySqlMaven
- 推薦20個值得收藏的前端開源專案前端
- EventBus 3.0+ 原始碼詳解(史上最詳細圖文講解)原始碼
- Jenkins 配置即程式碼(Configuration as Code)詳解Jenkins
- 【史上最全】Hadoop 核心 - HDFS 分散式檔案系統詳解(上萬字建議收藏)Hadoop分散式
- DKhadoop環境安裝配置步驟詳解Hadoop
- 可能是史上最詳盡的 QEM 網格簡化演算法解釋演算法
- centos7 (阿里雲、linux) 單機spark的安裝與配置詳解(jdk安裝與配置,scala安裝與配置,hadoop安裝與配置,spark安裝與配置)CentOS阿里LinuxSparkJDKHadoop
- Jenkins安裝Jenkins
- jenkins簡單安裝及配置(Windows環境JenkinsWindows
- 記錄---docker安裝及配置jenkins全流程DockerJenkins
- 推薦10個值得收藏的前端開源Awesome專案前端
- 後臺配置元件——使用最簡單的方式管理你的專案配置元件
- 史上最詳細ConvLstm的pytorch程式碼解讀分析PyTorch
- Kubernetes叢集部署史上最詳細(一)Kubernetes叢集安裝
- Jenkins入門系列之——02第二章 Jenkins安裝與配置Jenkins