偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

CI&CD落地實(shí)踐-Jenkins分布式環(huán)境搭建及多節(jié)點(diǎn)運(yùn)行

系統(tǒng) 其他OS
是Jenkins分別添加Linux從節(jié)點(diǎn)、Windows從節(jié)點(diǎn)以及構(gòu)建過程中出現(xiàn)報錯問題排查解決的全部過程??傮w來說,不管Linux從節(jié)點(diǎn)還是Windows從節(jié)點(diǎn),步驟基本一致。

前言

1.Jenkins架構(gòu)原理回顧

在前面一篇《CI&CD落地實(shí)踐2-Jenkins環(huán)境搭建&常見使用技巧》中,我們介紹了Jenkins的架構(gòu)原理:

Jenkins是一種典型的Master-Slave主從架構(gòu)。該架構(gòu)包括一個Master(主)節(jié)點(diǎn)和多個Slave(從)節(jié)點(diǎn)。Jenkins的Master-Slave架構(gòu)提供了可擴(kuò)展性和靈活性,允許用戶添加更多節(jié)點(diǎn)來提高Jenkins的處理能力,同時保持構(gòu)建和管理過程的可靠性。

  • Master節(jié)點(diǎn):Jenkins的核心是Master節(jié)點(diǎn),包含Jenkins的核心功能和管理界面,并與所有Slave節(jié)點(diǎn)通信,調(diào)度和分配作業(yè)。主要的作業(yè)配置信息,如構(gòu)建工作流程、觸發(fā)器和構(gòu)建器、節(jié)點(diǎn)和視圖信息,以及連接外部系統(tǒng)的應(yīng)用程序都存儲在Jenkins Master節(jié)點(diǎn)中。
  • Agent節(jié)點(diǎn):也稱slave節(jié)點(diǎn),是通過Jenkins Agent(代理)連接到Master節(jié)點(diǎn)的計算機(jī),它們執(zhí)行來自Master節(jié)點(diǎn)的作業(yè)并將結(jié)果返回給Master節(jié)點(diǎn)。

2.為什么要部署分布式環(huán)境?

在Jenkins的分布式環(huán)境中,有以下幾個好處:

  • 增加伸縮性:Jenkins的分布式環(huán)境中可以添加多個節(jié)點(diǎn),將負(fù)載分散到不同的節(jié)點(diǎn)上,從而增加伸縮性。如果對Jenkins的使用量有要求,可以先添加一些節(jié)點(diǎn),然后在需要的時候再添加更多節(jié)點(diǎn)。
  • 提高性能:在集中式環(huán)境中,Jenkins會變得擁擠,當(dāng)多個任務(wù)同時運(yùn)行時,會導(dǎo)致性能下降。在分布式環(huán)境中,任務(wù)可以在不同的節(jié)點(diǎn)上運(yùn)行,因此可以大大提高性能。
  • 支持多種操作系統(tǒng):Jenkins分布式環(huán)境可以在多種操作系統(tǒng)上運(yùn)行,如Windows,Linux等,在不同的操作系統(tǒng)上運(yùn)行構(gòu)建可以更好的測試、驗(yàn)證和分發(fā)。
  • 更好的可靠性:在一個節(jié)點(diǎn)發(fā)生故障時,其他節(jié)點(diǎn)可以繼續(xù)運(yùn)行任務(wù),從而保證每個任務(wù)都能成功運(yùn)行,增加了整個系統(tǒng)的可靠性。
  • 更好的安全性:在分布式環(huán)境中,不同的節(jié)點(diǎn)可以采用不同的方式進(jìn)行認(rèn)證和授權(quán),從而大大提高了Jenkins的安全性。

總之,Jenkins分布式環(huán)境可以提供更好的性能、伸縮性、可靠性和安全性,使得整個系統(tǒng)更加高效、穩(wěn)定和安全。

3.分布式環(huán)境建設(shè)計劃

其實(shí)驅(qū)使我搭建分布式環(huán)境倒不是因?yàn)樯炜s性不足、性能低下等方面的原因,而是我在一次Jenkins配置Maven項(xiàng)目、編譯后端springboot項(xiàng)目時,老是報Maven依賴庫錯誤的問題,最終導(dǎo)致編譯不過,嘗試了很多方法都沒有解決。但該項(xiàng)目在我本地的IDEA中是可以正常編譯通過的,于是我想了一個曲線救國的方案,就是在另一臺Windows機(jī)器上,搭建一套和我本機(jī)一模一樣的環(huán)境,將我本機(jī)的Maven倉庫整體打包復(fù)制過去,然后再安裝一個Jenkins,作為從節(jié)點(diǎn)使用。

當(dāng)前我只在一個單節(jié)點(diǎn)服務(wù)器上安裝了Jenkins,計劃在一臺Linux系統(tǒng)機(jī)器上安裝Jenkins作為從節(jié)點(diǎn)1,在另一臺Windows系統(tǒng)機(jī)器上安裝Jenkins作為從節(jié)點(diǎn)2。

節(jié)點(diǎn)

主機(jī)

系統(tǒng)

用途

Master 主節(jié)點(diǎn)

192.168.1.20

CentOS 7

分配、調(diào)度任務(wù)

Slave 從節(jié)點(diǎn)1

192.168.1.122

CentOS 7

編譯前端項(xiàng)目

Slave 從節(jié)點(diǎn)2

192.168.1.188

Win 10

編譯后端項(xiàng)目

一、添加Linux從節(jié)點(diǎn)

1.從節(jié)點(diǎn)環(huán)境配置

① 從節(jié)點(diǎn)安裝Jenkins

所在服務(wù)器需要安裝Jenkins,版本最好與主節(jié)點(diǎn)Jenkins版本保持一致,安裝步驟參考前面的《Jenkins環(huán)境搭建&常見使用技巧》

② 從節(jié)點(diǎn)環(huán)境配置

需要安裝Git以及相關(guān)插件,如果是編譯前端項(xiàng)目,需要配置nodejs,如果是編譯后端項(xiàng)目,還需要安裝maven等。前端環(huán)境配置可以參考前面的一篇《Jenkins實(shí)現(xiàn)前端項(xiàng)目自動化構(gòu)建》

2.添加從節(jié)點(diǎn)

① 創(chuàng)建從節(jié)點(diǎn)

入口:系統(tǒng)管理-節(jié)點(diǎn)管理-添加節(jié)點(diǎn),填寫從節(jié)點(diǎn)名稱,選擇固定節(jié)點(diǎn)

② 填寫從節(jié)點(diǎn)信息

  • Number of executors:執(zhí)行器數(shù)量,支持的最大job并發(fā)數(shù),一般配置建議不超過當(dāng)前節(jié)點(diǎn)電腦的CPU數(shù)量
  • 遠(yuǎn)程工作目錄
  • 標(biāo)簽:做調(diào)度策略時會用到
  • 用法:一般選擇第一個“Use this node as much as possible”(盡可能的使用這個節(jié)點(diǎn))
  • 啟動方式:通過Java Web啟動代理

注意最后“節(jié)點(diǎn)屬性”,可以勾選“工具位置”提前指定該機(jī)器中的如JDK等工具的路徑。

剛添加好后的從節(jié)點(diǎn)處于不可用狀態(tài),還需要進(jìn)行一堆的配置:

③ 主節(jié)點(diǎn)配置代理

主節(jié)點(diǎn):系統(tǒng)管理-全局安全配置-代理,指定一個代理端口(注意:從節(jié)點(diǎn)服務(wù)器防火墻一定要開放此端口)

④ 從節(jié)點(diǎn)連接主節(jié)點(diǎn)

在管理節(jié)點(diǎn)點(diǎn)擊查看新增的從節(jié)點(diǎn)詳情,會給出從節(jié)點(diǎn)如何連接主節(jié)點(diǎn)的提示:

在從節(jié)點(diǎn)上執(zhí)行:

# 下載agent.jar
curl -sO http://192.168.1.20:8080/jenkins/jnlpJars/agent.jar
# 連接主節(jié)點(diǎn)
java -jar agent.jar -jnlpUrl http://192.168.1.20:8080/jenkins/manage/computer/h122/jenkins-agent.jnlp -secret 5d40fefd1148aa3e1461eb53a7764f655c030a7859cfa648b2340ba019146a3d -workDir "/home/jenkins/workspace"

此時我的報錯了,提示42730端口不可用,也就是前面提到的從節(jié)點(diǎn)服務(wù)器防火墻一定要開放主節(jié)點(diǎn)中配置的代理端口

防火墻開通端口號

firewall-cmd --permanent --add-port 42730/tcp
firewall-cmd --reload

再次執(zhí)行連接命令后,連接成功

但是這種啟動方式會一直處于前臺運(yùn)行,此時終端窗口無法再進(jìn)行其他操作。因此,可以給它創(chuàng)建一個啟動腳本,使其后臺運(yùn)行。

⑤ 創(chuàng)建啟動腳本

腳本內(nèi)容如下:

nohup java -jar agent.jar -jnlpUrl http://192.168.1.20:8080/jenkins/manage/computer/h122/jenkins-agent.jnlp -secret 5d40fefd1148aa3e1461eb53a7764f655c030a7859cfa648b2340ba019146a3d -workDir "/home/jenkins/workspace" 2>&1 >nohup.out  &

運(yùn)行腳本

chmod +x start_agent.sh
./start_agent.sh

3.測試構(gòu)建項(xiàng)目

在前面一篇《Jenkins實(shí)現(xiàn)前端項(xiàng)目自動化構(gòu)建》中,已經(jīng)在主節(jié)點(diǎn)成功構(gòu)建運(yùn)行了前端項(xiàng)目,此時我們再次構(gòu)建該項(xiàng)目,看看它會不會在從節(jié)點(diǎn)運(yùn)行。

當(dāng)我點(diǎn)擊構(gòu)建時,該項(xiàng)目確實(shí)是通過我新建的從節(jié)點(diǎn)"h122"執(zhí)行構(gòu)建的

但出現(xiàn)了報錯"No such file or directory",提示項(xiàng)目路徑不存在:

項(xiàng)目構(gòu)建報錯問題排查

  • 項(xiàng)目的配置:

  • 控制臺輸出日志:

  • 原本在master節(jié)點(diǎn)上運(yùn)行時生成的工作目錄路徑:

  • 轉(zhuǎn)到slave從節(jié)點(diǎn)上運(yùn)行時生成的工作目錄路徑:

經(jīng)過一番排查,終于找到了原因:

  • 此項(xiàng)目原本是在主節(jié)點(diǎn)運(yùn)行,我在主節(jié)點(diǎn)配置這個任務(wù)時,項(xiàng)目的路徑是寫死的:/home/jenkins/workspace/開普勒-前端,在主節(jié)點(diǎn)運(yùn)行時確實(shí)有這個路徑,也能夠正常運(yùn)行;
  • 但是我在配置從節(jié)點(diǎn)時設(shè)置的遠(yuǎn)程工作目錄是:/home/jenkins/workspace,當(dāng)從節(jié)點(diǎn)首次構(gòu)建項(xiàng)目時,也會生成一個workspace目錄,并在這個workspace目錄下創(chuàng)建以項(xiàng)目名稱“開普勒-前端”為名字的工作目錄,最后疊加在一起,從節(jié)點(diǎn)上該項(xiàng)目真正的工作目錄就是 /home/jenkins/workspace/workspace/開普勒-前端。而此時從節(jié)點(diǎn)匹配不到原本的"/home/jenkins/workspace/開普勒-前端"這個目錄,所以運(yùn)行失敗。

項(xiàng)目構(gòu)建報錯問題解決

解決方式有兩種:

  1. 一種是修改從節(jié)點(diǎn)配置,將遠(yuǎn)程工作目錄路徑去掉一層workspace目錄;
  2. 第二種是通過全局變量$WORKSPACE來聲明工作目錄;

全局變量

我用的是第二種,將構(gòu)建步驟中原本的"cd /home/jenkins/workspace/開普勒-前端"改為"cd $WORKSPACE"

再次構(gòu)建,構(gòu)建成功!

企微群也收到了構(gòu)建成功的消息通知:

二、添加Windows從節(jié)點(diǎn)

1.從節(jié)點(diǎn)環(huán)境配置

① 從節(jié)點(diǎn)安裝Jenkins

同樣是需要先在Windows電腦上提前安裝好Jenkins。

② 從節(jié)點(diǎn)環(huán)境配置

同樣需要安裝JDK、Git以及相關(guān)插件,如果是編譯前端項(xiàng)目,需要配置nodejs,如果是編譯后端項(xiàng)目,還需要安裝maven等。

2.添加從節(jié)點(diǎn)

① 創(chuàng)建從節(jié)點(diǎn)

入口:系統(tǒng)管理-節(jié)點(diǎn)管理-添加節(jié)點(diǎn),填寫從節(jié)點(diǎn)名稱,選擇固定節(jié)點(diǎn)

② 填寫從節(jié)點(diǎn)信息

同樣選擇“通過Java Web啟動代理”

在管理節(jié)點(diǎn)點(diǎn)擊查看新增的從節(jié)點(diǎn)詳情,會給出從節(jié)點(diǎn)如何連接主節(jié)點(diǎn)的提示:

③ 從節(jié)點(diǎn)連接主節(jié)點(diǎn)

在從節(jié)點(diǎn)上執(zhí)行:

curl -sO http://192.168.1.20:8080/jenkins/jnlpJars/agent.jar
java -jar agent.jar -jnlpUrl http://192.168.1.20:8080/jenkins/manage/computer/win188/jenkins-agent.jnlp -secret ed74e189c3cf7012fac65f0c9af7e091a1159d36ebbef8c581491fccff40a1b5 -workDir "C:\Users\chenjigang\.jenkins"

連接成功:

此時會在我們配置的自定義工作目錄下自動創(chuàng)建生成remoting內(nèi)部數(shù)據(jù)目錄

創(chuàng)建完成,從節(jié)點(diǎn)win188處于在線狀態(tài):

3.指定項(xiàng)目運(yùn)行節(jié)點(diǎn)

配置Jenkins項(xiàng)目

比如我想為某個項(xiàng)目指定用這個從節(jié)點(diǎn)win188來運(yùn)行,那么則可以在該項(xiàng)目配置-General中勾選“限制項(xiàng)目的運(yùn)行節(jié)點(diǎn)”,并填寫標(biāo)簽表達(dá)式,也就是前面我們填寫從節(jié)點(diǎn)時設(shè)置的標(biāo)簽名稱“win188”

構(gòu)建該項(xiàng)目,可以看到,已經(jīng)通過win188這個從節(jié)點(diǎn)來運(yùn)行:

報錯問題解決

但是在運(yùn)行的時候報錯了,提示maven路徑不存在,原因是此項(xiàng)目原本是在主節(jié)點(diǎn)(Linux)上運(yùn)行的,該臺機(jī)器上的maven目錄是/home/apache-maven-3.6.3,而換到了從節(jié)點(diǎn)(Windows)系統(tǒng)運(yùn)行以后,maven路徑不一致。

需要在win188從節(jié)點(diǎn)配置中指定相關(guān)工具位置:

再次運(yùn)行,構(gòu)建成功:

小結(jié)

以上就是Jenkins分別添加Linux從節(jié)點(diǎn)、Windows從節(jié)點(diǎn)以及構(gòu)建過程中出現(xiàn)報錯問題排查解決的全部過程??傮w來說,不管Linux從節(jié)點(diǎn)還是Windows從節(jié)點(diǎn),步驟基本一致。關(guān)鍵的是如何合理利用好這些節(jié)點(diǎn),從而物盡其用,使其發(fā)揮出更大價值!

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-04-26 11:29:58

Jenkins版本Java 11

2013-12-04 13:32:30

2020-10-21 14:10:28

工具測試開發(fā)

2022-03-01 16:26:09

鏈路監(jiān)控日志監(jiān)控分布式系統(tǒng)

2013-12-06 09:37:49

分布式系統(tǒng)Travis CI

2022-09-01 07:23:53

云原生數(shù)據(jù)庫Aurora

2013-12-20 09:43:13

分布式

2013-12-05 09:36:37

分布式系統(tǒng)

2023-02-28 07:01:11

分布式緩存平臺

2017-02-28 09:48:30

2013-06-08 14:34:42

Hadoop 2.0

2014-06-18 16:47:57

初志云存儲云計算

2023-04-26 08:01:09

分布式編譯系統(tǒng)

2017-08-10 10:17:32

Hadoop分布式搭建

2021-05-18 08:00:00

Kubernetes容器進(jìn)程

2015-09-23 14:32:30

NFV分布式數(shù)據(jù)環(huán)境

2022-12-15 15:38:33

智能

2024-05-20 11:23:18

2024-01-05 07:28:50

分布式事務(wù)框架

2022-09-07 08:18:26

分布式灰度方案分支號
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號