1. 程式人生 > >Jenkins安裝配置,專案釋出、管理詳解,史上最清晰,值得收藏!

Jenkins安裝配置,專案釋出、管理詳解,史上最清晰,值得收藏!

2018年07月12日 14:29:36

目錄:

一、導語

二、Jenkins 介紹

三、基礎環境準備

四、Jenkins安裝

五、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 protected]" 或者去掉 -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 [email protected]

返回 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:

[email protected]: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.gitxinwei-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進階主要介紹常用外掛的使用,更接近於生產環境的應用如,多伺服器遠端部署。

感謝閱讀,希望繼續關注。

九、黑色小幽默

甲:“做程式設計師太辛苦了,我想換行……我該怎麼辦?

乙:“敲一下回車”

相關推薦

Jenkins安裝配置專案釋出管理清晰值得收藏

2018年07月12日 14:29:36 目錄: 一、導語 二、Jenkins 介紹 三、基礎環境準備 四、Jenkins安裝 五、Jenkins配置 六、原始碼構建、打包、部署、執行 七、常見問題彙總 八、後記 九、黑色小幽默 一、導語 Jenk

javascript中this簡單易理解的講解包你不再找錯this指向)

判斷方法 this永遠指向一個物件,但普通函式與箭頭函式this指向不同。 普通函式: 普通函式的this是動態的,由函式是如何被呼叫的來決定。 ①是否使用了new以建構函式方式來呼叫函式,如果是則指向新建立的物件 ②是否使用(物件.屬性)的方式呼叫函式(如Obj.

unity3d配置Android環境打包釋出Apk流程

Unity配置Android環境,打包釋出安卓流程 SDK檔案 二、安裝 JDK  執行安裝程式jdk-7u67-windows-x64 Java-JDK 分別點選下一步進行安裝。 安裝中 在安裝過程中先後會出現兩次選擇安裝目錄的介面,如果預設路徑不是以下兩個路徑,全部改為以下路徑,如果

unity3d-配置Android環境打包釋出Apk流程

轉載自: http://www.jianshu.com/p/3c67fbfbb67c Unity配置Android環境,打包釋出安卓流程 SDK檔案 二、安裝 JDK  執行安裝程式jdk-7u67-windows-x64 Java-JDK 分別點選

Unity 使用教程 之 Win 配置Android環境打包釋出Apk流程

轉載自:http://www.jianshu.com/p/3c67fbfbb67cUnity配置Android環境,打包釋出安卓流程SDK檔案二、安裝 JDK 執行安裝程式jdk-7u67-windows-x64Java-JDK分別點選下一步進行安裝。安裝中在安裝過程中先後會

Linux基礎管理——軟件包管理:rpmyum高級使用方法(沒有之一)

rpm yum 軟件包管理 yum倉庫 yum源地址配置 前言: GRU Linux操作系統中,實現軟件包管理的常見工具有RPM和yum;本專題將就Centos系統中安裝包的命名、校驗、密鑰導入導出、包安裝、卸載、升級、查詢等眾多rpm包管理相關的操作實現進行總結。1、安裝包1.1、

saltstack安裝及使用筆記(不全不要錢)

說明:本文使用的是兩個節點的叢集,分別為node1和node2 配合如下帖子進行學習: centos下按安裝python3和2共存 使用centos6.7 1.安裝saltstack 在node1和node2分別執行下面的命令(下面是先配置映象源為阿里雲,作用是提高下載速度)

vimrc檔案配置的全文收錄(附帶中文解釋)

一、vi與vim的不同vi類似於windows的記事本,比較適合編輯普通文字,但是用於編寫指令碼程式碼就不太合適了,缺少高亮顯示程式碼、自動縮排等重要功能;而vim類似於windows下的高階編輯器,為了提高開發效率,需要使用vim而不是vi。因此,首先做如下調整,以便只使用vim作為開發指令碼的功能工具:

vimrc文件配置的全文收錄(附帶中文解釋)

更新 普通 鈴聲 echo rec expand 開發 空格 缺少 一、vi與vim的不同vi類似於windows的記事本,比較適合編輯普通文本,但是用於編寫腳本代碼就不太合適了,缺少高亮顯示代碼、自動縮進等重要功能;而vim類似於windows下的高級編輯器,為了提高開發

數人云|35個平臺框架資料庫細說什麼是Serverless

數人云:Serverless,這個新興的技術正在逐步深入開發領域,它為應用提供大量基礎設施,減少開發人員的部署問題,同時它還能解決敏捷開發中,交付具有預算約束的可伸縮應用的問題。 本文將概述Serverless的發展歷史、基本概念、應用、框架和優點。 爺爺,

unity配置Android打包釋出Apk流程

第一步:如果想要讓Unity可以打包Apk,你需要先下載一個JDK7以上(包括7)的版本。  並且必須是64位。  安裝時請記住您的安裝路徑  下面是分享的JAVA的jdk 下載完成後,進行解壓:  一定要放在自己能記住的地方,並且不能有中文路徑 安裝JDK

[轉] webpack之前端效能優化(不斷更新中。。。)

最近在用webpack優化首屏載入效能,通過幾種外掛之後我們上線前後的速度快了一倍,在此就簡單的分享下吧,先上個優化前後首屏渲染的對比圖。 可以看到總下載時間從3800ms縮短到1600ms。 我們在用webpack時一般都會選擇多入口檔案吧,為的就是將自己的原始碼跟第三方庫程式碼分離。這是之前的程式

簡單好玩的機器學習課程

用四個遊戲,完成機器學習入門。通俗易懂,生動有趣。入門的同學可以看一下。 讓機器學會打遊戲【第二彈】守衛紅城(主要介紹感知器演算法) 看看機器是如何守衛紅城的,利用感知器演算法,判斷湧入的是敵軍還是難

flask筆記(不全不要錢系列)

1.說在前面的話 pythonweb開發框架 2.Flask開發環境搭建 開發者工具: 下面我們將配置基於vim的python開發環境 Vundle:管理vm外掛的外掛,通過他可以方便的進行vim外掛的安裝與解除安裝 YouCo

CDH-5.10.2叢集的搭建【不全不要錢】(已經實現但是非預期效果可能是由於記憶體不足)

說在前面的話:本文適合電腦記憶體16G以上的,安裝的是純正的CDH,不是三個節點的,純正四節點。建議配置主節點3G記憶體,從節點1.5G記憶體,硬碟大小建議單節點配置20G以上,CDH版本比apache吃記憶體和硬碟,請準備好再安裝 如果你是新手學習,強烈!建議不要瞎改

關於int和integer(全面認真的總結新鮮出爐我也標題黨一次把)

首先int和integer有是區別,是個人都知道integer是int的封裝類,int是java 的一個基本資料型別,是一個關鍵字。然後可能還會有人說int預設是0,integer物件預設是null,這有一個前提,那是作為類的成員,如果你在一個方法中出現int a;syste

全面細的Android中layout建立子資料夾

最近我在封裝android播放器 ,裡面的佈局巢狀比較多,layout檔案也比較多,所以想著能不能再layout資料夾下建立子資料夾,經過一系列的查閱與嘗試,最終還是完成了我想要的效果,在此分享給大家。先截圖來一波正確的操作:分解步驟:首先將專案以project目錄開啟1.在

通俗徹底搞懂字元亂碼問題的本質

1、引言 IM等社交應用的開發工作中,亂碼問題也很常見,比如: 1)IM聊天訊息中的Emoji表情為什麼發給後端後MySQL資料庫裡會亂碼; 2)檔名中帶有中文的大檔案聊天訊息傳送後,對方看到的文名是亂碼; 3)Http rest介面呼叫時,後端讀取到APP端傳過來的引數有中文亂碼問題; ... ...

Win10下IIS配置MVC專案釋出IIS新增網站圖解

說明 安裝IIS 開啟控制面板 進入程式 點選啟用或關閉Windows功能 等待幾秒鐘,勾選以下專案 驗證I

在Windows系統下Jenkins安裝配置過程填坑記錄

一、Jenkins安裝完之後,預設是用本地系統賬戶登入,查了下這個賬戶的名字是LocalSystem,並且這個賬戶沒有密碼 因為是用的本地系統賬戶,導致當前windows的登入賬戶Administrator下的很多配置失效,例如 1、C:\Users\Administ