CentOS服务器上搭建Jenkins+maven+GitLab(七)——Jenkins集群/并发构建

CentOS服务器上搭建Jenkins+maven+GitLab(一)——环境搭建

CentOS服务器上搭建Jenkins+maven+GitLab(二)——创建一个maven项目

CentOS服务器上搭建Jenkins+maven+GitLab(三)——GitLab钩子实现自动化

CentOS服务器上搭建Jenkins+maven+GitLab(四)——Jenkins的构建触发器介绍

CentOS服务器上搭建Jenkins+maven+GitLab(五)——配置邮件通知功能

CentOS服务器上搭建Jenkins+maven+GitLab(六)——Docker容器化构建的三种方式

  Jenkins 控制器可以独立运行,既负责管理构建环境,又使用自身的执行器和资源来执行构建任务。但随着项目数量或负载的增加,很可能会面临资源耗尽的问题,为使 Jenkins 基础设施重新恢复正常运行,通常需要对控制器进行升级(如增加内存、CPU 核心数等)。在维护和升级期间,控制器以及整个构建环境都将处于停机状态,作业将被暂停,整个 Jenkins 基础设施也将无法使用。在这种情况下,扩展 Jenkins 将会非常困难,并且会导致大量“空闲”时段,此时分配给构建环境的所有资源都处于闲置状态。

  此外,在控制器上执行作业还会带来一个“安全”问题:Jenkins 用于运行作业的“jenkins”用户将对控制器上的所有 Jenkins 资源拥有完全权限。这意味着,只需一段简单的脚本,恶意用户便能直接访问那些其完整性和隐私无法得到保障的敏感信息。

  代理是一种用于将项目从控制器中卸载的机器。构建任务的调度方式取决于为每个项目所配置的设置。例如,某些项目可能被配置为“限制该项目的运行位置(restrict where this project is run)”,从而将其绑定到特定的代理或一组已打标签的代理。其他未配置此设置的项目将从 Jenkins 中的可用代理池中选择一个代理。
  在分布式构建环境中,Jenkins 控制器仅利用其资源处理 HTTP 请求并管理构建环境,而实际的构建执行则交由各个代理节点完成。通过这种配置,可以实现架构的水平扩展,从而使单个 Jenkins 实例能够承载大量项目和构建环境。

(1).实验环境

  4核8G CentOS7.9.2009  192.168.142.102/103  GitLab(yum/docker)

  1核1G CentOS7.9.2009  192.168.142.104  Jenkins+maven+git

  1核1G CentOS7.9.2009  192.168.142.105  测试服务器(git+docker)

  1核1G CentOS7.9.2009  192.168.142.104  Jenkins_node1(JDK+maven+git)

  1核1G CentOS7.9.2009  192.168.142.104  Jenkins_node2(JDK+maven+git)

  所有服务器均已设置阿里云yum源,并且yum -y install epel-release,关闭SELinux和防火墙。

(2).Jenkins_node1和Jenkins_node2安装JDK和maven

  二进制安装JDK25

[root@localhost ~]# java -version
-bash: java: 未找到命令  //我的系统没有,如果显示的是openjdk version ...,那就是openjdk
#如果存在jdk,可以使用这个命令卸载自带的openjdk
[root@localhost ~]# yum -y remove java-*
#解压二进制文件
[root@localhost ~]# tar xvf jdk-25_linux-x64_bin.tar.gz -C /usr/local/
#新增环境变量文件,配置环境变量
[root@localhost ~]# vim /etc/profile.d/jdk25.sh
export JAVA_HOME=/usr/local/jdk-25.0.3
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#加载环境变量
[root@localhost ~]# . /etc/profile.d/jdk25.sh
#测试
[root@localhost ~]# java -version
java version "25.0.3" 2026-04-21 LTS
Java(TM) SE Runtime Environment (build 25.0.3+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM (build 25.0.3+9-LTS-195, mixed mode, sharing)

  maven二进制工具包解压

[root@localhost ~]# tar xvf apache-maven-3.9.15-bin.tar.gz -C /usr/local/
[root@localhost ~]# /usr/local/apache-maven-3.9.15/bin/mvn -v
Apache Maven 3.9.15 (98b2cdbfdb5f1ac8781f537ea9acccaed7922349)
Maven home: /usr/local/apache-maven-3.9.15
Java version: 25.0.3, vendor: Oracle Corporation, runtime: /usr/local/jdk-25.0.3
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

  yum安装git

[root@localhost ~]# yum -y install git

(3).Jenkins添加节点服务器登录凭证

  有两种创建方式,这里我展示第一种创建方式:

  1、右上角设置-->凭证管理(Credentials)-->Add Credentials(添加凭证)-->Username with password(用户名和密码)-->Next(下一步)-->范围选择全局(Global)以及填写其他相关信息-->Create(创建)

  2、右上角个人头像-->凭证(Credentials)-->Add Credentials(添加凭证)-->全局凭据(Global)-->Username with password(用户名和密码)-->Next(下一步)-->填写其他相关信息-->Create(创建)

  注意:我这里两个节点账号密码一致所以只添加了一个凭证。

image

image

  Treat username as secret的意思是将用户名视为机密信息,这个看情况进行勾选。注意:如果这里设置了密码,

image

(4).添加节点

  右上角设置-->节点和云管理(Manage Nodes and Clouds)-->+ New Node(新增节点)-->输入相关信息-->Create(创建)-->输入节点列表信息-->保存(Save)

image

image

  

image

  节点列表中部分相关信息说明:

    • Number of executors:执行器数量。Jenkins 可以在此节点上执行并发构建的最大数目,代理节点(非 master 节点)必须至少拥有一个执行器。对于 master 节点,设置执行器的数目为零将会阻止构建在其上执行。注意:master 节点将总是能够执行轻量级的任务,包括顶级的流水线任务。
    • 标签:用来对节点分组,标签之间用空格分隔。例如'refression java6'将会把一个节点标记上'regression'和'java6'。举例来说,如果你有多个不同系统的构建节点,其中只有两个为Windows系统节点,此时你的Job需要在Windows系统上运行,那么你可以配置Windows系统节点的标签为'windows',然后把Job的标签也设置为'windows',这样你的Job就不会运行在除了Windows节点以外的其它节点之上了。
    • 用法:控制Jenkins如何在这台服务器上安排构建。尽可能的使用这个节点,在这种模式下,Jenkins会尽可能的使用这个节点,任何时候如果一个构建能使用这个节点构建,那么Jenkins就会使用它。只允许运行绑定到这台机器的Job(通过标签?),在这种模式下,Jenkins只会构建那些分配到这台机器的Job,这允许一个节点专门保留给某种类型的Job。
    • 启动方式:控制 Jenkins 启动此代理节点的方式。Launch agents via SSH(通过SSH启动代理节点),在这种模式下,通过安全的 SSH 连接发送命令来启动代理节点,该代理节点必须能够从 Jenkins 控制器访问,并且您需要提供一个能够在目标机器上登录的账户,此方式不需要 root(管理员)权限通过Java Web启动代理,在这种模式下,允许代理节点在准备就绪时随时连接到 Jenkins 控制器
    • Host Key Verification Strategy(主机密钥验证策略):控制 Jenkins 在连接时如何验证远程主机提供的 SSH 密钥Known hosts file Verification Strategy(已知主机文件验证策略检查Jenkins 运行用户对应的 known_hosts 文件( ~/.ssh/known_hosts ),以确认其中是否存在与当前连接相匹配的条目Manually provided keys Verification Strategy(手动提供密钥验证策略,由管理员手动指定受信任的主机密钥。Manually trusted keys Verification Strategy(手动可信密钥验证策略)检查远程密钥是否与当前标记为该主机可信的密钥相匹配No verification Verification Strategy(非验证验证策略,不进行任何验证,存在安全风险,不推荐在生产环境使用。

image

image

image

(5).测试

  项目名称-->配置-->General-->“在必要的时候并发构建”-->"限制项目的运行节点"-->填写“标签表达式”-->Save(保存)。

image

image

image

  连点3下构建,如下:

image

  连点5下构建,如下:

image

 

posted @ 2026-06-10 21:53  苦逼运维  阅读(13)  评论(0)    收藏  举报