做的網(wǎng)站 顯示亂碼google關(guān)鍵詞seo
目錄
節(jié)點(diǎn)在 Jenkins 中的主要作用
1. 分布式構(gòu)建
分布式處理
負(fù)載均衡
2. 提供不同的運(yùn)行環(huán)境
多平臺支持
特殊環(huán)境需求
3. 提高資源利用率
動態(tài)資源管理
云端集成
4. 提供隔離和安全性
任務(wù)隔離
權(quán)限控制
5. 提高可擴(kuò)展性
橫向擴(kuò)展
高可用性
Jenkins 主服務(wù)器(Master)
Jenkins 從服務(wù)器(Agent)
準(zhǔn)備節(jié)點(diǎn)環(huán)境
添加節(jié)點(diǎn)
建立任務(wù)
自動上線測試
?
在 Jenkins 中,節(jié)點(diǎn)(Node)是指 Jenkins 用于執(zhí)行構(gòu)建任務(wù)的計(jì)算資源。節(jié)點(diǎn)的主要作用是提供構(gòu)建和測試任務(wù)的運(yùn)行環(huán)境。通過使用多個(gè)節(jié)點(diǎn),Jenkins 可以分布式地執(zhí)行構(gòu)建任務(wù),從而提高效率和并行處理能力。
?
節(jié)點(diǎn)在 Jenkins 中的主要作用
?
1. 分布式構(gòu)建
分布式處理
節(jié)點(diǎn)允許 Jenkins 將構(gòu)建任務(wù)分布到多個(gè)機(jī)器上運(yùn)行,從而實(shí)現(xiàn)并行處理。這有助于減少構(gòu)建時(shí)間,特別是對于大型項(xiàng)目或需要運(yùn)行大量測試的項(xiàng)目。
負(fù)載均衡
通過在多個(gè)節(jié)點(diǎn)之間分配任務(wù),Jenkins 可以實(shí)現(xiàn)負(fù)載均衡,避免單個(gè)節(jié)點(diǎn)過載。這有助于提高系統(tǒng)的穩(wěn)定性和性能。
2. 提供不同的運(yùn)行環(huán)境
多平臺支持
節(jié)點(diǎn)可以運(yùn)行在不同的操作系統(tǒng)和硬件平臺上。通過在不同平臺上配置節(jié)點(diǎn),Jenkins 可以針對不同平臺進(jìn)行構(gòu)建和測試,例如 Windows、Linux 和 macOS。
特殊環(huán)境需求
有些項(xiàng)目可能需要特定的軟件或硬件環(huán)境。通過在特定配置的節(jié)點(diǎn)上運(yùn)行構(gòu)建任務(wù),Jenkins 可以滿足這些特殊環(huán)境的需求。例如,某些構(gòu)建任務(wù)可能需要特定版本的編譯器、庫或硬件設(shè)備。
3. 提高資源利用率
動態(tài)資源管理
通過動態(tài)添加或移除節(jié)點(diǎn),Jenkins 可以根據(jù)需求調(diào)整可用的計(jì)算資源。這有助于在高峰期提供更多的計(jì)算能力,而在低負(fù)載時(shí)期減少資源浪費(fèi)。
云端集成
Jenkins 可以集成云計(jì)算平臺(如 AWS、Azure、Google Cloud),自動啟動和關(guān)閉云端節(jié)點(diǎn),從而優(yōu)化資源使用和成本。
4. 提供隔離和安全性
任務(wù)隔離
通過在不同的節(jié)點(diǎn)上運(yùn)行構(gòu)建任務(wù),可以實(shí)現(xiàn)任務(wù)之間的隔離,避免相互干擾。例如,不同的任務(wù)可以在獨(dú)立的虛擬機(jī)或容器中運(yùn)行,從而提高安全性和穩(wěn)定性。
權(quán)限控制
可以對不同的節(jié)點(diǎn)設(shè)置不同的訪問權(quán)限,從而控制哪些用戶或任務(wù)可以在特定節(jié)點(diǎn)上運(yùn)行。這有助于保護(hù)敏感的構(gòu)建環(huán)境和數(shù)據(jù)。
5. 提高可擴(kuò)展性
橫向擴(kuò)展
通過增加節(jié)點(diǎn)數(shù)量,Jenkins 可以輕松實(shí)現(xiàn)橫向擴(kuò)展,以滿足不斷增長的構(gòu)建需求。這種擴(kuò)展方式通常比增加單個(gè)服務(wù)器的性能更具成本效益。
高可用性
通過在多個(gè)節(jié)點(diǎn)上運(yùn)行構(gòu)建任務(wù),Jenkins 可以提高系統(tǒng)的高可用性。如果某個(gè)節(jié)點(diǎn)發(fā)生故障,其他節(jié)點(diǎn)可以繼續(xù)處理任務(wù),從而減少停機(jī)時(shí)間。
?
在 Jenkins 中,節(jié)點(diǎn)(Node)是 Jenkins 運(yùn)行構(gòu)建任務(wù)的機(jī)器。節(jié)點(diǎn)可以是 Jenkins 主服務(wù)器(Master)或一臺或多臺從服務(wù)器(Agent)。
Jenkins 主服務(wù)器(Master)
Jenkins 主服務(wù)器不僅承擔(dān)了用戶界面和調(diào)度任務(wù)的職責(zé),還可以運(yùn)行構(gòu)建任務(wù)。然而,為了提高系統(tǒng)的可擴(kuò)展性和穩(wěn)定性,通常建議將實(shí)際的構(gòu)建任務(wù)分配給從服務(wù)器來運(yùn)行,而主服務(wù)器主要負(fù)責(zé)管理和調(diào)度。
Jenkins 從服務(wù)器(Agent)
Jenkins 從服務(wù)器是由主服務(wù)器管理的機(jī)器,用于實(shí)際運(yùn)行構(gòu)建任務(wù)。通過分布式的方式,Jenkins 可以將構(gòu)建任務(wù)分發(fā)到多個(gè)從服務(wù)器上,從而提高構(gòu)建效率和并發(fā)能力。
?
?
準(zhǔn)備節(jié)點(diǎn)環(huán)境
?
本實(shí)驗(yàn)前提環(huán)境基于上篇博文配置:Jenkins安裝部署與配置-CSDN博客
現(xiàn)在再新增一臺虛擬機(jī),關(guān)閉防火墻和selinux,進(jìn)行時(shí)間同步?
主機(jī)名:node01 | 192.168.226.24 | Rocky_linux9.4 | 2核心2G |
#修改主機(jī)名
[root@localhost ~]# hostnamectl set-hostname node01
#進(jìn)行時(shí)間同步
[root@localhost ~]# systemctl restart chronyd
?
在名為jenkins的主機(jī)中生成密鑰對
#生成密鑰對
[root@jenkins ~]# ssh-keygen#將公鑰拷貝到節(jié)點(diǎn)node01主機(jī)上
[root@jenkins ~]# ssh-copy-id 192.168.226.24
給node01主機(jī)安裝JDK
[root@node01 ~]# wget https://download.oracle.com/java/17/archive/jdk-17.0.6_linux-x64_bin.rpm
[root@node01 ~]# yum install -y jdk-17.0.6_linux-x64_bin.rpm[root@node01 ~]# java -version
java version "17.0.6" 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)
添加節(jié)點(diǎn)
來到主節(jié)點(diǎn)機(jī)器的web頁面
查看節(jié)點(diǎn)信息
添加節(jié)點(diǎn)
?
#將私鑰填入設(shè)置里
[root@jenkins ~]# cat .ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
刷新網(wǎng)頁看節(jié)點(diǎn)信息,點(diǎn)擊node01幾點(diǎn),點(diǎn)擊日志可以看到信息
?
現(xiàn)在將該node01節(jié)點(diǎn)下線,進(jìn)行后續(xù)操作
?
?
建立任務(wù)
下面會使用到此博文的極狐gitlab :?極狐Gitlab使用(1)-CSDN博客
登錄gitlab的web管理頁面,選擇一個(gè)用戶進(jìn)入創(chuàng)建訪問令牌
返回jenkins的web頁面
在jenkins主機(jī)的工作空間中查看
[root@jenkins ~]# cd .jenkins/workspace/
[root@jenkins workspace]# ll
total 0
drwxr-x--- 4 root root 54 Jul 11 20:40 test001
drwxr-x--- 2 root root 6 Jul 11 20:40 test001@tmp
[root@jenkins workspace]# cd test001
[root@jenkins test001]# ll
total 8
-rw-r----- 1 root root 6163 Jul 11 20:40 README.md
drwxr-x--- 2 root root 24 Jul 11 20:40 xiaoliceshi
[root@jenkins test001]# cd xiaoliceshi/
[root@jenkins xiaoliceshi]# ll
total 4
-rw-r----- 1 root root 67 Jul 11 20:40 index.html
[root@jenkins xiaoliceshi]# cat index.html
這是一個(gè)測試
sdsxcbc
cb
ccvvc
<!--[if IE]>cb<![endi[root@jenkins xiaoliceshi]#
?當(dāng)開發(fā)再次更新版本后,我們只需點(diǎn)一次構(gòu)建即可將代碼拉取到j(luò)enkins主機(jī)中。那么我們可以通過配置拉取后的動作即shell命令,去讓其拉取后自動替換到項(xiàng)目所在的發(fā)布目錄中,就可以實(shí)現(xiàn)一次構(gòu)建,自動上線。
自動上線測試
?
在node01主機(jī)中,下載nginx,將該主機(jī)模擬成發(fā)布項(xiàng)目的服務(wù)器
當(dāng)然改主機(jī)進(jìn)行了關(guān)閉防火墻和selinux,進(jìn)行時(shí)間同步?
[root@node01 ~]# yum install -y nginx
[root@node01 ~]# systemctl enable --now nginx
[root@node01 ~]# ssh-keygen
[root@node01 ~]# ssh-copy-id 192.168.226.22
打開nginx頁面查看一下
?
現(xiàn)在來到gitlab頁面,進(jìn)行模擬前端開發(fā)修改代碼,這里我使用xiaobai用戶,進(jìn)入連接的項(xiàng)目里,切換到測試分支進(jìn)行編輯代碼
合并分支到main
?
來到j(luò)enkins頁面
修改test001配置
?修改配置,其中有一些命令和模板在下面的代碼已給出,可以復(fù)制使用
echo "代碼拉取完成"
echo "==========="
echo "準(zhǔn)備進(jìn)行上線"
scp xiaoliceshi/index.html 192.168.226.24:/usr/share/nginx/html/
ssh 192.168.226.24 "chmod 777 -R /usr/share/nginx/html/"
ssh 192.168.226.24 "systemctl restart nginx"
echo "上線任務(wù)已完成"
echo "==========="
郵件主題模板
項(xiàng)目 【$PROJECT_NAME】 第【$BUILD_NUMBER】次構(gòu)建 - $BUILD_STATUS!
郵件內(nèi)容模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構(gòu)建日志</title>
</head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<h3>本郵件由系統(tǒng)自動發(fā)出,請勿回復(fù)!</h3> <tr> <br/> 各位同事,大家好,以下為${PROJECT_NAME }項(xiàng)目構(gòu)建信息</br> <td><font color="#CC0000">構(gòu)建結(jié)果 - ${BUILD_STATUS}</font></td> </tr> <tr> <td><br /> <b><font color="#0B610B">構(gòu)建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>項(xiàng)目名稱 : ${PROJECT_NAME}</li> <li>構(gòu)建編號 : 第${BUILD_NUMBER}次構(gòu)建</li> <li>觸發(fā)原因: ${CAUSE}</li> <li>構(gòu)建狀態(tài): ${BUILD_STATUS}</li> <li>構(gòu)建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構(gòu)建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>項(xiàng)目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> <h4><font color="#0B610B">最近提交</font></h4>
<ul>
<hr size="2" width="100%" />
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
詳細(xì)提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/></td> </tr> </table>
</body>
</html>
?
現(xiàn)在修改好了配置就保存,然后點(diǎn)擊構(gòu)建
?
此時(shí)代表已經(jīng)構(gòu)建成功了
再次來到node01主機(jī)的nginx頁面查看,已經(jīng)被新代碼替換了,完成了點(diǎn)一下構(gòu)建就可以上線項(xiàng)目。