一:什么是Jeckins?
Jenkins是一個可擴展的持續(xù)集成引擎。
持續(xù)集成,就是通常所說的CI(Continues Integration),可以說是現(xiàn)代軟件技術(shù)開發(fā)的基礎(chǔ)。
持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成他們的工作,通常每個成員至少集成一次,也意味著每天可能會發(fā)生多次集成。
每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡快地發(fā)現(xiàn)集成錯誤。許多團隊發(fā)現(xiàn)這個過程可以大大減少集成的問題,讓團隊能夠更快的開發(fā)內(nèi)聚的軟件。
Jenkins作用:
1、持續(xù)、自動地構(gòu)建、測試軟件項目。
2、監(jiān)控一些定時執(zhí)行的任務(wù)。
Jenkins的目的:
Jenkins 主要是監(jiān)控軟件開發(fā)流程,快速顯示問題。所以能保證開發(fā)人員以及相關(guān)人員省時省力提高開發(fā)效率。
CI系統(tǒng)在整個開發(fā)過程中的主要作用是控制:當(dāng)系統(tǒng)在代碼存儲庫中探測到修改時,它將運行構(gòu)建的任務(wù)委托給構(gòu)建過程本身。如果構(gòu)建失敗了,那么CI系統(tǒng)將通知相關(guān)人員,然后繼續(xù)監(jiān)視存儲庫。它的角色看起來是被動的;但它確能快速反映問題
二:Jenkins架構(gòu)
在上面這個分布式的構(gòu)建環(huán)境中,Jenkins master主要負責(zé)如下:
接收構(gòu)建觸發(fā)(比如,一個提交到GitHub后)
發(fā)送通知(比如,在構(gòu)建失敗后,發(fā)送email或者HipChat消息)
處理HTTP請求(和客戶端進行交互)
管理構(gòu)建環(huán)境(在slave編排工作執(zhí)行)
由于master和slave負責(zé)不相同的,所以他們請求不同的環(huán)境。
Master: 往往是專用的主機,項目從小到大需要內(nèi)存200 MB--- 70 GB.
Slave: 沒有特別的要求,它應(yīng)該能夠執(zhí)行單一的構(gòu)建。比如:這個項目比較大的話,請求100GB的內(nèi)存,那么該slave主機應(yīng)該滿足項目的要求。
三:Jenkins的安裝和部署
jenkins官網(wǎng)下載地址:https://jenkins.io/download/ 目前版本:2.277.4
jenkins項目有兩條發(fā)布線,分別是LTS長期支持版(或穩(wěn)定版)和每周更新版(最新版)。建議選擇LTS長期支持版,下載通用java項目war包。
下載jdk1.8以上版本并安裝,安裝后配置jdk的環(huán)境變量。
在dos命令行運行命令解壓war包:java -jar jenkins.war (默認情況下端口是8080.如果要使用其他端口啟動,可以通過命令行”java –jar Jenkins.war --httpPort=80”的方式修改)
運行命令后jenkins.war會自動在C盤目錄下生成一個jenkins的文件夾。C盤下的這個文件夾可獨立運行。
在瀏覽器中訪問jenkins項目:http://localhost:8080/jenkins 出現(xiàn)解鎖 Jenkins界面,說明jenkins項目搭建完成,這里需要輸入管理員密碼。
管理員密碼在:C:\jenkins\secrets\initialAdminPassword 打開此文件獲得密碼并輸入密碼,點擊”繼續(xù)”
點擊:【選擇插件來安裝】按鈕,出現(xiàn)如下默認插件安裝界面。
這個頁面會默認選中安裝一些插件,直接點擊”安裝”按鈕,安裝所有推薦的插件。
等待所有插件安裝完成(耐心等待1-2個小時)。安裝插件的時候,會有一些插件安裝失敗(如上圖的X),這些插件的安裝是有前置條件的,等安裝結(jié)束后,按右下角“重試”,繼續(xù)安裝,之前失敗的插件就都能安裝了。安裝完成后,點擊“繼續(xù)”按鈕,
輸入用戶名:admin,密碼:123456.確認密碼:123456.全名:admin,電子郵件地址后點“保存并完成”按鈕
點擊“保存并完成”出現(xiàn)下圖表示jenkins已經(jīng)配置完成。點擊[開始使用jenkins]登錄。
四:jenkins持續(xù)集成
1:全局配置
成功初始化后接下來需要做一些相應(yīng)的全局的工具配置,點擊首頁左邊菜單的Manage Jenkins,然后再點擊Global Tool Configuration選項。
在以下的頁面中設(shè)置好Maven、JDK、Git的相關(guān)配置信息。需要注意的是,在JDK配置中取消勾選Install automatically,也就是不自動下載jdk,而是手動指定JAVA_HOME的路徑。
在下面Maven安裝的選項中指定Maven的安裝路徑
2. 創(chuàng)建任務(wù)
點擊首頁的新建Item或者創(chuàng)建一個新任務(wù)。
在跳轉(zhuǎn)的頁面中輸入任務(wù)名稱(這里創(chuàng)建一個helloworld任務(wù)用于演示)。然后選擇自由風(fēng)格的的任務(wù),最后點解確定按鈕。
3. 配置任務(wù)
在創(chuàng)建好任務(wù)之后,會來到任務(wù)的配置頁面,下面將演示如何對任務(wù)進行一些常規(guī)的配置。
General配置
描述:填寫構(gòu)建的描述信息。
Discard old builds:勾選,表示丟棄就的構(gòu)建,并填寫丟棄策略的保持構(gòu)建天數(shù)和保持構(gòu)建的最大個數(shù)。
GitHub項目:勾選,填寫github的項目地址。
源碼管理
源碼管理可選擇git或svn。由于案例是托管在github上,因此這里選擇Git,需要注意的是,如果使用ssh加密通信,需要在本地使用ssh-keygen生成秘鑰對,然后將私鑰配置到j(luò)enkins,把公鑰配置到github上。
點擊添加按鈕
在彈出的子窗口中,類型選擇SSH Username with private key,然后填寫Username(隨意),勾選Enter directly,在Key的文本域中加入私有key的秘鑰串,然后點擊最下面的添加。
構(gòu)建環(huán)境
構(gòu)建環(huán)境中勾選Delete workspace before build starts(開始構(gòu)建之前刪除工作空間)
構(gòu)建
在構(gòu)建這一項中選擇構(gòu)建步驟,由于案例是一個Maven項目,因此這里選擇使用Maven來進行構(gòu)建。點擊添加構(gòu)建步驟,在下拉菜單中選擇Invoke top-level Maven targets。
然后選擇maven版本,目標(biāo)出填寫Maven聲明周期命令,這里設(shè)置為執(zhí)行清理后進行打包,并忽略單元測試。
自動部署
前面的配置已經(jīng)基本完成了項目的自動構(gòu)建,通常在構(gòu)建完之后需要將項目進行部署,那么同樣可以讓Jenkins來完成項目的自動部署。在自動部署的時候,應(yīng)先停止原有的應(yīng)用進程然后重新啟動,這些操作可以使用shell腳本來完成。
在構(gòu)建的選項中再次點擊增加構(gòu)建步驟,選擇Execute shell
在命令中添加sheel腳本
# #!/bin/bash表示使用系統(tǒng)的bash
#!/bin/bash
echo"Restart SpringBootApplication..."
# 獲取demo.jar的后臺進程id,并賦值給變量pid
# ps用于顯示進程信息的命令,-ef參數(shù)表示顯示所有進程和全部格式
# “|”是一個管道符號,表示ps和grep命令同時執(zhí)行
# grep是linux的一個文本搜索工具
# grep demo.jar表示查找內(nèi)容包含demo.jar的進程信息
# grep -v grep表示反向查找,查找不包含grep的內(nèi)容的進程信息(也就是進行一次過濾)
# awk是一個強大的文本分析工具,分析并生成報告。'{print $2}'表示打印出第二個字段
pid=`ps -ef | grep demo.jar | grep -v grep | awk '{print $2}'`
# 如果pid不為“”,則kill掉該進程
if[-n"$pid"]
then
kill-9$pid
fi
# Jenkins默認會在Build結(jié)束后Kill掉所有的衍生進程,
# BUILD_ID=DONTKILLME就是防止jenkins殺掉衍生的子進程
BUILD_ID=DONTKILLME
# 后臺啟動demo.jar,2>&1表示將標(biāo)準(zhǔn)出錯也輸出到springboot.log文件中,最后一個&表示該命令在后臺執(zhí)行
nohup java-jar/root/.jenkins/workspace/helloworld/target/demo.jar > /root/springboot.log2>&1 &
最后點擊應(yīng)用并保存,此時任務(wù)的配置就基本完成。
4. 執(zhí)行任務(wù)
回到首頁,在任務(wù)列表中可以看到剛配置好的任務(wù),點擊任務(wù)名稱旁邊的下拉箭頭,選擇Build Now開始執(zhí)行任務(wù)。
此時在左下角的構(gòu)建執(zhí)行狀態(tài)中會有一個helloworld任務(wù)執(zhí)行的進度條。
旁邊的#1表示第幾次構(gòu)建,如果執(zhí)行完后再次點擊Build Now,那么又會產(chǎn)生一條新的構(gòu)建記錄為#2.可以點擊#1進去查控制臺輸出任務(wù)執(zhí)行日志。
最后,當(dāng)任務(wù)正確執(zhí)行完后,我們就可以正常訪問項目。以后每當(dāng)我們有新的版本提交到github,那么只需要在任務(wù)列表中點擊Build Now來執(zhí)行構(gòu)建任務(wù)。那么jenkins會自動從github上拉取最新的版本,接著使用Maven將項目進行編譯打包等操作,然后通過shell腳本自動部署項目。
更多關(guān)于軟件測試培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。