官术网_书友最值得收藏!

1.2 Jenkins系統安裝

Jenkins是基于Java語言開發的持續集成系統,可以運行在任何安裝了Java運行環境的計算機上。本節,筆者將為讀者逐步演示Jenkins服務端(Server)和代理端(Agent)的安裝部署。

1.2.1 準備工作

Jenkins采用分布式架構,由服務端節點和代理端節點組成。服務端主要負責流水線作業的調度,代理端實際運行流水線作業。Jenkins架構圖如圖1-6所示。

圖1-6 Jenkins架構圖

提示:

為了保障Jenkins平臺的穩定性,筆者建議不要在生產環境的Jenkins服務端節點上運行流水線作業——當運行大量任務時,可能會使Jenkins節點崩潰,這會影響節點的性能。

1.操作系統

Jenkins是跨平臺(Windows/Linux/macOS)的,部署方式可以選擇通過本機系統包、Docker、Kubernetes等。筆者實驗環境是Linux CentOS 8操作系統。以下是系統和內核版本的信息。

[root@jenkins-service ~]#cat /etc/redhat-release
CentOS Stream release 8
[root@jenkins-service ~]#uname -r
4.18.0-373.el8.x86_64

2.安裝JDK

Jenkins是使用Java語言開發的,運行時需要依賴JDK環境。自Jenkins LTS(長期支持版本)2.346.x之后,安裝部署時最低版本要求是JDK11(參考更新說明見https://www.jenkins.io/doc/upgrade-guide/2.346/)。

JDK11的安裝過程可以參考以下代碼。

#下載JDK11壓縮包
[root@jenkins-service ~]#wget https://github.com/adoptium/temurin10-
binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_linux_
hotspot_11.0.16.1_1.tar.gz

#解壓
[root@jenkins-service ~]#tar zxf OpenJDK11U-jdk_x64_linux_hotspot_
11.0.16.1_1.tar.gz -C /usr/local
[root@jenkins-service ~]# cd /usr/local/jdk-11.0.16.1+1/
[root@jenkins-service jdk-11.0.16.1+1]# ls
bin  conf  include  jmods  legal  lib  man  NOTICE  release

#設置環境變量
[root@jenkins-service ~]#vim /etc/profile
export JAVA_HOME=/usr/local/jdk-11.0.16.1+1
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins-service ~]#source /etc/profile

#配置軟鏈接
[root@jenkins-service jdk-11.0.16.1+1]# ln -sf /usr/local/jdk-11.0.16.1+1/
bin/java /usr/bin/

#驗證版本信息
[root@jenkins-service jdk-11.0.16.1+1]# /usr/bin/java  -version
openjdk version "11.0.16.1" 2021-07-12
OpenJDK Runtime Environment Temurin-11.0.16.1+1 (build 11.0.16.1+1)
OpenJDK 63-Bit Server VM Temurin-11.0.16.1+1 (build 11.0.16.1+1, mixed mode)

1.2.2 安裝Jenkins

在CentOS中需要下載系統rpm包來安裝Jenkins服務端。筆者本次安裝采用的是2.346.2-1.1版本,建議使用國內源下載對應的rpm包,如清華源(https://mirrors.tuna.tsinghua.edu.cn/jenkins/)。具體的安裝步驟及參考代碼如下。

1.下載系統包

下載系統包的命令如下。

[root@jenkins-service~]#wget https://mirrors.tuna.tsinghua.edu.cn/
jenkins/redhat-stable/jenkins-2.346.3-1.1.noarch.rpm

2.安裝系統包

安裝系統包的命令如下(見圖1-7)。

[root@jenkins-service ~]#rpm -ivh jenkins-2.346.3-1.1.noarch.rpm

圖1-7 安裝Jenkins服務

3.啟動服務

下面啟動Jenkins服務并檢查服務的狀態,如圖1-8所示。

圖1-8 啟動Jenkins服務

4.設置服務開機自啟

設置Jenkins服務開機自啟,如圖1-9所示。

圖1-9 設置Jenkins服務開機自啟

當我們完成上面的操作后,可以通過ps aux命令查看服務進程。如下面代碼所示,通過進程的啟動參數可以得知Jenkins默認的HTTP監聽端口是8080。

#查看服務進程
[root@jenkins-service ~]#ps aux | grep java | grep jenkins
jenkins     3779 29.5  9.1 14278716 2984916 ?    Ssl  21:12   0:25 /usr/bin/
java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=
/var/cache/jenkins/war --httpPort=8080

1.2.3 初始化

Jenkins服務端安裝好之后還有一個初始化的過程,通過瀏覽器訪問http://<service_ip>: 8080即可進入初始化頁面。

初始化的步驟如下。

1.解鎖系統

為了安全地安裝Jenkins,會將解鎖需要的密碼存儲到Jenkins啟動日志或者/var/lib/ jenkins/secrets/initialAdminPassword文件中。讀者可任選其中一種方式,將密碼粘貼到輸入框,單擊“繼續”按鈕,如圖1-10所示。

圖1-10 Jenkins解鎖

2.安裝插件

Jenkins的功能擴展都來自于插件。Jenkins插件資源豐富,為了集成一些工具,我們不得不安裝很多插件,但是在生產環境中,筆者不建議大家安裝太多無用的插件,因為插件增多會影響Jenkins的啟動速度,插件安裝方式如圖1-11所示。

圖1-11 Jenkins插件安裝方式

此處選擇“選擇插件來安裝”進入插件的選擇頁面,如圖1-12所示??梢钥吹絁enkins默認選擇了一些插件,這里我們單擊“無”取消默認選擇的插件,然后根據需求安裝本地化語言插件。

圖1-12 選擇Jenkins插件

單擊“安裝”按鈕即可進入插件安裝進度頁面,在該頁面可以看到已選擇插件的安裝進度和日志信息。

提示:

這個步驟很容易出現插件安裝停頓的問題,多數情況是因為網絡問題導致的,因此要保持網絡暢通。

3.創建用戶

插件安裝完成后,會自動跳轉到管理員用戶創建頁面,填寫用戶名、密碼等信息,單擊“保存并完成”按鈕,如圖1-13所示。

圖1-13 創建管理員用戶

4.配置實例

當前筆者的環境機器IP是192.168.1.200,端口號使用的是Jenkins默認設置的8080。如果讀者的端口或者IP地址發生了變化,記得更新這里的設置,如圖1-14所示。

5.完成初始化

如果進入如圖1-15所示的頁面,意味著安裝和初始化Jenkins服務端完成。

圖1-14 Jenkins實例配置

圖1-15 Jenkins安裝完成

第一次安裝部署完成后,如果Jenkins管理頁面顯示的是英文,重啟后會顯示中文,如圖1-16所示。

圖1-16 Jenkins首頁

1.2.4 安裝Agent節點

Jenkins的代理端主要用于運行Jenkins服務端所調度的流水線作業。它的部署方式與服務端一樣是跨平臺的。為了減少實驗環境的資源,筆者將Jenkins服務端和代理端部署在同一臺機器中。注意:實際生產環境要采用高性能的服務器進行獨立部署。

1.配置節點

單擊左側“系統管理”進入“管理Jenkins”頁面,在頁面中可以看到“節點管理”選項,如圖1-17所示。

圖1-17 Jenkins節點管理

進入節點管理頁面,可以看到已經在線的服務端master節點。單擊左側菜單中的“新建節點”,如圖1-18所示。

圖1-18 Jenkins新建節點

進入新建節點頁面后,填寫要創建的節點名稱和Type(節點類型)。因為筆者將Jenkins Agent節點部署到了一臺固定的機器上,所以Type選擇固定節點,如圖1-19所示。

圖1-19 填寫Jenkins節點信息

單擊Create按鈕創建節點并進入節點的詳細配置頁,如圖1-20所示。

各個配置項的說明如下。

 名字:填寫節點的名稱。

 描述:填寫節點的描述信息。

 Number of executors:執行器的數量,默認每一個Jenkins作業會分配一個執行器。

 遠程工作目錄:Agent節點的工作目錄。

 標簽:可以對節點進行分組,便于流水線調度。

 用法:哪些作業可以使用這些節點,選擇“只允許運行綁定到這臺機器的Job”或者“經常使用該節點”即可運行任意作業。

圖1-20 Jenkins節點詳細配置

在Jenkins的生產環境中,常用的啟動方式為SSH和JNLP。JNLP對應中文為“通過Java Web啟動代理”。這里筆者選擇“通過Java Web啟動代理”,如圖1-21所示。

圖1-21 Jenkins節點啟動方式

提示:

如果遇到“Either WebSocket mode is selected, or the TCP port for inbound agents must be enabled”錯誤提示,是因為在Jenkins新版本中,默認禁用了TCP端口。我們需要導航到“系統管理>管理Jenkins >安全>全局安全”配置開啟TCP端口,如圖1-22所示。

圖1-22 Jenkins Server與Agent通信端口配置

這里筆者默認配置的是50000端口,此端口作為后續Agent節點啟動時與Server節點通信使用。

填寫好上面的配置并保存。系統會自動進入節點頁面,可以看到剛剛增加的節點配置成功(此時節點添加成功但是還不能運行作業,需要啟動代理程序),如圖1-23所示。

圖1-23 Jenkins節點管理

2.啟動節點

以“Java Web”方式設置的代理節點,需要下載啟動程序。參考圖1-23單擊節點進入節點信息頁面,獲取agent.jar的下載鏈接。啟動節點的步驟如下。

1)創建Agent目錄

創建一個目錄用于存儲Jenkins Agent的安裝程序,命令如下。

#創建Agent目錄
[root@ jenkins-service ~]#mkdir jenkinsagent
[root@ jenkins-service ~]#cd jenkinsagent/

2)下載Agent啟動程序

Agent啟動程序是一個Java語言開發的jar包。下載的命令如下。

#下載代理程序
[root@ jenkins-service jenkinsagent]#wget http://192.168.1.200:8080/
jnlpJars/agent.jar
--2021-9-10 22:27:30--  http://192.168.1.200:8080/jnlpJars/agent.jar

3)啟動Agent程序

使用Java命令啟動Agent程序,如圖1-24所示。

圖1-24 啟動Jenkins Agent程序

提示:

根據筆者的經驗,此步驟出現問題的概率很高。大部分情況都是網絡問題導致的,例如檢查Agent節點與Jenkins Server節點的50000端口和8080端口的連通性是否正常。

當出現“Connected”關鍵字時查看節點管理頁面,可以看到該Agent已經連接成功。刷新節點頁面,如圖1-25所示。

圖1-25 Jenkins節點狀態

提示:

當前節點啟動成功,但是Jenkins Agent程序并未后臺運行。也就是說,終端關閉后程序就停止了,需要進一步優化。筆者習慣將啟動命令寫到腳本中,用nohup的方式啟動程序可以參考以下代碼。

#!/bin/bash

nohup java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/
build01/jenkins-agent.jnlp -secret @secret-file -workDir "/opt/
jenkinsagent" &

至此,我們完成了Jenkins Agent節點的安裝,我們的基礎環境準備好了。

主站蜘蛛池模板: 临泉县| 阿合奇县| 绿春县| 安宁市| 锡林郭勒盟| 承德县| 邛崃市| 平阴县| 晋州市| 防城港市| 依兰县| 武义县| 西峡县| 富宁县| 紫云| 东乡| 水富县| 台山市| 临朐县| 南昌市| 迁安市| 黑山县| 依安县| 镇雄县| 邹城市| 凌源市| 柏乡县| 清丰县| 开平市| 临潭县| 大悟县| 文成县| 绥棱县| 武强县| 石渠县| 阳泉市| 济源市| 东乡族自治县| 任丘市| 东阳市| 重庆市|