日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jenkins集群测试环境原理

發(fā)布時間:2025/3/18 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jenkins集群测试环境原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


Jenkins自動化構建成過程,可幫助我們節(jié)省大量時間,完成這個過程的自動化后,在以后的開發(fā)過程中,我們需要做的,就是只是提交代碼到版本庫中,構建自動完成,基本不再需要人工干預。

代碼倉庫作為構建的素材庫,構建所需的代碼從代碼庫中獲得。

最好有一臺服務器單獨作為持續(xù)集成服務器,一方面保證了環(huán)境的純凈,一方面不影響開發(fā),而且持續(xù)集成服務器一般是隨時準備開始構建的,所以一般也不關機。

[首先要有統(tǒng)一的代碼庫,服務器不斷從版本控制服務器上檢查代碼狀態(tài),看代碼是否有更新。如果發(fā)現有代碼更新,那么就從版本控制服務器下載最新的代碼。等代碼完全更新以后,調用自動化編譯腳本,進行代碼編譯。然后運行所有的自動化測試,并且進行代碼分析。如果其中任何一個步驟失敗,就表示build失敗,持續(xù)集成服務器會給予響應的反饋。每次代碼提交之后,都會在持續(xù)集成服務器上觸發(fā)一個定時構建,然后進行編譯、部署。]

[原則]

1.開發(fā)人員必須及時向版本控制庫中提交代碼,也必須經常性地從版本控制庫中更新代碼到本地;

2.需要有專門的集成服務器來執(zhí)行集成構建。根據項目的具體實際,集成構建可以被軟件的修改來直接觸發(fā),也可以定時啟動,如每半個小時構建一次;

3.必須保證構建的成功。如果構建失敗,修復構建過程中的錯誤是優(yōu)先級最高的工作。一旦修復,需要手動啟動一次構建。

4.不更新構建失敗的代碼

開發(fā)人員及時的提交代碼進行構建是符合上述實踐的,及時拉取代碼可以防止工作中的分支偏離主干分支太多。定時觸發(fā)構建或者通過檢測代碼的修改情況在觸發(fā)構建都是可以的,主要是根及時的構建新的代碼。如果構建失敗,則必要及時處理導致失敗的問題,修復后重新構建。當然構建失敗的代碼就不要拉到本地了,會污染一個本來是可以運行的工作區(qū)。

[持續(xù)集成工具]

講了這么多概念,有沒一種工具把這種實踐實現呢?當然有,常見的持續(xù)集成工具如下:

jenkins

travis

gitlab

buddybuild

僅列舉了一些典型的,Jenkins 是傳統(tǒng)型的工具,前身是 Hudson,04 年到現在已經有十多年的歷史,后幾個是最近幾年出現的新一批,多少都和容器技術有點關系,這里我們主要介紹 Jenkins,因為這個工具比較常用,各種開發(fā)實踐都可以通過大量的插件來組合實現,可定制性好很多。

jenkins

1jenkins是一個開源項目,提供了一種易于使用的持續(xù)集成系統(tǒng),使開發(fā)者從繁雜的集成中解脫出來,專注于更為重要的業(yè)務邏輯實現上。同時 Jenkins 能實施監(jiān)控集成中存在的錯誤,提供詳細的日志文件和提醒功能,還能用圖表的形式形象地展示項目構建的趨勢和穩(wěn)定性。— 維基百科

Jenkins 有哪些功能呢?

1.定時拉取代碼并編譯

2.靜態(tài)代碼分析

3.定時打包發(fā)布測試版

4.自定義額外的操作,如跑單元測試等

5.出錯提醒

基本上都是持續(xù)集成實踐中的要求和周邊的一些實現措施,如提醒功能等,出錯后及時提醒開發(fā)者修復,Jenkins 中通過配置 SMTP 配置信息(這個一般的郵件服務提供商都有提供),郵件模板等,創(chuàng)建事件觸發(fā)器,在事件(如編譯失敗)發(fā)生時,及時發(fā)送郵件通知開發(fā)者,挺方便的。

Jenkins 有很多種觸發(fā)構建的方式,如 webhook,定時更新代碼等,同時可以在觸發(fā)構建后執(zhí)行自定義的構建操作,通過編輯自定義的構建腳本,幾乎可以進行任何構建操作。

圖片理解

1)齒輪:如果將java/maven/ant/git/tomcat/jenkins等軟件比喻為齒輪,如下圖

2)兩個軟件在一起可以驅動另外一個軟件,如下圖

3)如果把這些軟件要集成在一起工作,那么這個軟件就可以存在其他軟件的中間來驅動各個軟件工作,如下圖:

4)jenkins就是類似中間那個齒輪,來驅動其他軟件的集成一起工作,如下圖

某個博客的理解

[是什么]

jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使得持續(xù)集成編程可能。它的前身是hudson,是基于java開發(fā)的一種持續(xù)集成工具,它可以根據配置進行持續(xù)定期編譯,運行相應的代碼,將運行結果發(fā)送至郵件或者展示成報告等。

[為什么]

jenkins作為持續(xù)集成的標志性工具,自然是有了持續(xù)集成的眾多優(yōu)點。jenkins可以做一些自動化的build,只要我們把jenkins搭建成功,可以設置幾分鐘build一次,在定時自動build,驗證單元測試,如果發(fā)生錯誤則把錯誤報告以email形式發(fā)送給項目模塊負責人。

[宏觀理解]

先來張圖,大致理解下宏觀:

詳細介紹:

至于關于郵件的配置,也是為了方便我們的開發(fā)和管理,jenkins很強大。

講到這里,還是“啊呀呀,完蛋,還是有點不懂“的話,不如直接甩圖(從網上copy下來的)

這里是選擇Gitlab作為git server。Gitlab的功能和Github差不多,但是是開源的,可以用來搭建私有git server,也提供非常強大的web GUI,比如開發(fā)者互相review源代碼的時候就會很方便。

系統(tǒng)的工作流程大概分為以下幾步:

1> 開發(fā)者將新版本push到git server (Gitlab)。

2> Gitlab隨后觸發(fā)jenkins master結點進行一次build。(通過web hook或者定時檢測)

3> jenkins master結點將這個build任務分配給若干個注冊的slave結點中的一個,這個slave結點根據一個事先設置好的腳本進行build。這個腳本可以做的事情很多,比如編譯,測試,生成測試報告等等。這些原本需要手動完成的任務都可以交給jenkins來做。

4> 我們在build中要進行編譯,這里使用了分布式編譯器distcc來加快編譯速度。

notes

jenkins的工作原理是:先將源代碼從gitlab中拷貝一份到本地,然后根據設置的腳本進行build。我們可以看出,整個系統(tǒng)的關鍵就是那個build腳本,用來告訴jenkins在一次集成中需要執(zhí)行的任務。

不過我之后是用的Github作為git server。但其實差不多,先講到這里,重點難點還是在之后jenkins的安裝配置使用上。


Jenkins官網最新穩(wěn)定版:
https://pkg.jenkins.io/redhat-stable/

1.下載依賴

sudo?wget?-O?/etc/yum.repos.d/jenkins.repo?https://pkg.jenkins.io/redhat-stable/jenkins.repo

2.導入秘鑰

sudo?rpm?--import?https://pkg.jenkins.io/redhat-stable/jenkins.io.key

3.安裝

yum?install?jenkins?#等待安裝時間較長,約25min


jenkins安裝完畢

4.啟動前檢查是否已安裝jdk

java???#顯示java參數即證明已安裝jdk

5.查找jenkins安裝路徑

rpm?-ql?jenkins


jenkins安裝路徑

jenkins相關目錄釋義:
(1)/usr/lib/jenkins/:jenkins安裝目錄,war包會放在這里。
( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在這里配置。
(3)/var/lib/jenkins/:默認的JENKINS_HOME。
(4)/var/log/jenkins/jenkins.log:jenkins日志文件。

6.配置jenkins
(1)查找jenkins端口

vim?/etc/sysconfig/jenkins:set?ignorecase/jenkins_port?回車


查找到jenkins端口為8080

(2)查看其他端口占用情況

netstat?-ntlp


顯示已被占用端口

被占用端口與jenkins端口8080無沖突,即可進入下一步啟動jenkins

(3)啟動jenkins

java?-jar?/usr/lib/jenkins/jenkins.war?--httpPort=8080

(4)修改jenkins端口
若默認8080端口未被占用,可不修改
若端口已被占用,則修改端口為其他端口,并將對應端口開放

#端口改為8899java?-jar?/usr/lib/jenkins/jenkins.war?--ajp13Port=-1?--httpPort=8899#啟動java?-jar?/usr/lib/jenkins/jenkins.war?--httpPort=8899


啟動完成

(5)驗證jenkins能否打開
在宿主機瀏覽器輸入http://IP:Port
我這里輸入:http://192.168.114.128:8080
(修改端口后輸入:http://192.168.114.128:8899)


進入jenkins解密界面

cat?/var/lib/jenkins/secrets/initialAdminPassword


獲取密碼

=>獲取密碼=>輸入密碼=>繼續(xù)
=>安裝插件=>retry幾次可安裝成功
=>注冊賬號 (記錄好賬號密碼)
=>開始使用Jenkins


getting started






轉載于:https://blog.51cto.com/kaile/1956267

總結

以上是生活随笔為你收集整理的jenkins集群测试环境原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。