Jenkins中Node节点与构建任务

news/2024/9/18 20:56:59/ 标签: Jenkins, CI/CD

目录

Jenkins%20%E4%B8%AD%E7%9A%84%E4%B8%BB%E8%A6%81%E4%BD%9C%E7%94%A8-toc" style="margin-left:40px;">节点在 Jenkins 中的主要作用

1. 分布式构建

分布式处理

负载均衡

2. 提供不同的运行环境

多平台支持

特殊环境需求

3. 提高资源利用率

动态资源管理

云端集成

4. 提供隔离和安全性

任务隔离

权限控制

5. 提高可扩展性

横向扩展

高可用性

Jenkins%20%E4%B8%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88Master%EF%BC%89-toc" style="margin-left:80px;">Jenkins 主服务器(Master)

Jenkins%20%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88Agent%EF%BC%89-toc" style="margin-left:80px;">Jenkins 从服务器(Agent)

准备节点环境

添加节点

建立任务

自动上线测试


 

Jenkins 中,节点(Node)是指 Jenkins 用于执行构建任务的计算资源。节点的主要作用是提供构建和测试任务的运行环境。通过使用多个节点,Jenkins 可以分布式地执行构建任务,从而提高效率和并行处理能力。

 

Jenkins%20%E4%B8%AD%E7%9A%84%E4%B8%BB%E8%A6%81%E4%BD%9C%E7%94%A8" style="background-color:transparent;">节点在 Jenkins 中的主要作用

 

1. 分布式构建

分布式处理

节点允许 Jenkins 将构建任务分布到多个机器上运行,从而实现并行处理。这有助于减少构建时间,特别是对于大型项目或需要运行大量测试的项目。

负载均衡

通过在多个节点之间分配任务,Jenkins 可以实现负载均衡,避免单个节点过载。这有助于提高系统的稳定性和性能。

2. 提供不同的运行环境

多平台支持

节点可以运行在不同的操作系统和硬件平台上。通过在不同平台上配置节点,Jenkins 可以针对不同平台进行构建和测试,例如 Windows、Linux 和 macOS。

特殊环境需求

有些项目可能需要特定的软件或硬件环境。通过在特定配置的节点上运行构建任务,Jenkins 可以满足这些特殊环境的需求。例如,某些构建任务可能需要特定版本的编译器、库或硬件设备。

3. 提高资源利用率

动态资源管理

通过动态添加或移除节点,Jenkins 可以根据需求调整可用的计算资源。这有助于在高峰期提供更多的计算能力,而在低负载时期减少资源浪费。

云端集成

Jenkins 可以集成云计算平台(如 AWS、Azure、Google Cloud),自动启动和关闭云端节点,从而优化资源使用和成本。

4. 提供隔离和安全性

任务隔离

通过在不同的节点上运行构建任务,可以实现任务之间的隔离,避免相互干扰。例如,不同的任务可以在独立的虚拟机或容器中运行,从而提高安全性和稳定性。

权限控制

可以对不同的节点设置不同的访问权限,从而控制哪些用户或任务可以在特定节点上运行。这有助于保护敏感的构建环境和数据。

5. 提高可扩展性

横向扩展

通过增加节点数量,Jenkins 可以轻松实现横向扩展,以满足不断增长的构建需求。这种扩展方式通常比增加单个服务器的性能更具成本效益。

高可用性

通过在多个节点上运行构建任务,Jenkins 可以提高系统的高可用性。如果某个节点发生故障,其他节点可以继续处理任务,从而减少停机时间。

 

Jenkins 中,节点(Node)是 Jenkins 运行构建任务的机器。节点可以是 Jenkins 主服务器(Master)或一台或多台从服务器(Agent)。

Jenkins%20%E4%B8%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88Master%EF%BC%89" style="background-color:transparent;">Jenkins 主服务器(Master)

Jenkins 主服务器不仅承担了用户界面和调度任务的职责,还可以运行构建任务。然而,为了提高系统的可扩展性和稳定性,通常建议将实际的构建任务分配给从服务器来运行,而主服务器主要负责管理和调度。

Jenkins%20%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88Agent%EF%BC%89" style="background-color:transparent;">Jenkins 从服务器(Agent)

Jenkins 从服务器是由主服务器管理的机器,用于实际运行构建任务。通过分布式的方式,Jenkins 可以将构建任务分发到多个从服务器上,从而提高构建效率和并发能力。

 

 

准备节点环境

 

本实验前提环境基于上篇博文配置:Jenkins安装部署与配置-CSDN博客

现在再新增一台虚拟机,关闭防火墙和selinux,进行时间同步 

主机名:node01192.168.226.24Rocky_linux9.42核心2G
#修改主机名
[root@localhost ~]# hostnamectl set-hostname node01
#进行时间同步
[root@localhost ~]# systemctl restart chronyd

 

在名为jenkins的主机中生成密钥对

#生成密钥对
[root@jenkins ~]# ssh-keygen#将公钥拷贝到节点node01主机上
[root@jenkins ~]# ssh-copy-id 192.168.226.24

给node01主机安装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)

添加节点

来到主节点机器的web页面

查看节点信息

添加节点

 

#将私钥填入设置里
[root@jenkins ~]# cat .ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

刷新网页看节点信息,点击node01几点,点击日志可以看到信息

 

现在将该node01节点下线,进行后续操作

 

 

建立任务

下面会使用到此博文的极狐gitlab : 极狐Gitlab使用(1)-CSDN博客

登录gitlab的web管理页面,选择一个用户进入创建访问令牌

返回jenkins的web页面

在jenkins主机的工作空间中查看

[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 
这是一个测试
sdsxcbc
cb
ccvvc
<!--[if IE]>cb<![endi[root@jenkins xiaoliceshi]# 

 当开发再次更新版本后,我们只需点一次构建即可将代码拉取到jenkins主机中。那么我们可以通过配置拉取后的动作即shell命令,去让其拉取后自动替换到项目所在的发布目录中,就可以实现一次构建,自动上线。

自动上线测试

 

在node01主机中,下载nginx,将该主机模拟成发布项目的服务器

当然改主机进行了关闭防火墙和selinux,进行时间同步 


[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页面查看一下

 

现在来到gitlab页面,进行模拟前端开发修改代码,这里我使用xiaobai用户,进入连接的项目里,切换到测试分支进行编辑代码

合并分支到main

 

来到jenkins页面

修改test001配置

 修改配置,其中有一些命令和模板在下面的代码已给出,可以复制使用

echo "代码拉取完成"
echo "==========="
echo "准备进行上线"
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 "上线任务已完成"
echo "==========="

邮件主题模板

项目 【$PROJECT_NAME】 第【$BUILD_NUMBER】次构建 - $BUILD_STATUS!

邮件内容模板

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</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>本邮件由系统自动发出,请勿回复!</h3>    <tr>    <br/>            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   </tr>    <tr>    <td><br />    <b><font color="#0B610B">构建信息</font></b>    <hr size="2" width="100%" align="center" /></td>    </tr>    <tr>    <td>    <ul>    <li>项目名称 : ${PROJECT_NAME}</li>    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    <li>触发原因: ${CAUSE}</li>    <li>构建状态: ${BUILD_STATUS}</li>    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    <li>项目  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>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/></td>    </tr>    </table>    
</body>    
</html>

 

现在修改好了配置就保存,然后点击构建

 

此时代表已经构建成功了

再次来到node01主机的nginx页面查看,已经被新代码替换了,完成了点一下构建就可以上线项目。


http://www.ppmy.cn/news/1475961.html

相关文章

Elasticsearch索引管理和生命周期管理

在大数据和搜索引擎技术日益成熟的今天&#xff0c;Elasticsearch作为一款基于Lucene构建的开源搜索引擎&#xff0c;凭借其强大的全文搜索能力、分布式架构以及可扩展性&#xff0c;在日志分析、实时监控、应用搜索等多个领域得到了广泛应用。然而&#xff0c;随着数据量的不断…

前端框架入门之Vue _el和data的两种写法 分析MVVM模型

目录 _el与data的两种写法 MVVM模型 _el与data的两种写法 查看vue的实例对象 我们在这边注释掉了el属性 这样的话div容器就绑定不了vue实例 当我们可以在这里写一个定时任务 然后再回头指定 这个mount有挂载的意思 就是把容器对象交给vue实例后 去给他挂载指定的对象 &…

网络基础:Vlan原理与配置

VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将一个物理网络划分为多个逻辑子网的技术。它通过在网络交换机上配置&#xff0c;使得不同VLAN中的设备即使连接在同一个物理交换机上&#xff0c;也不能直接进行通信&#xff0c;从而实现…

10校大满贯!中国内地高校2024年1-6月CNS发文统计出炉

随着全球科研竞争的日趋激烈&#xff0c;CNS&#xff08;Cell、Nature、Science&#xff09;作为科学领域的三大顶级期刊&#xff0c;不仅是科研成果的展示平台&#xff0c;更是各国科研实力比拼的重要战场。近年来&#xff0c;中国高校在国际科研舞台上的表现愈发抢眼&#xf…

vuepress 配置文件分类管理

背景 在.vuepress的config.js配置文件中&#xff0c;我们需要设置head, plugins, nav三项主要配置。 如果都写在config.js就会显得很臃肿&#xff0c;不便于维护。 代码 config.js const headConf require("./config/headConf"); const pluginsConf require(&q…

Hadoop3:HDFS-集群安全模式

一、基本介绍 1、安全模式 文件系统只接受读数据请求&#xff0c;而不接受删除、修改等变更请求 2、 二、进入安全模式场景 1、NameNode在加载镜像文件和编辑日志期间处于安全模式&#xff08;就是启动集群的时候&#xff09;&#xff1b; 2、NameNode再接收DataNode注册时…

深入解析HTTP与HTTPS:定义、架构、原理、应用场景及实战指南

前言 在互联网技术飞速发展的今天&#xff0c;HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;已经成为Web通信的基础协议。无论是浏览网页、提交表单&#xff0c;还是进行数据交互&#xff0c;HT…

Apache Omid TSO 组件源码实现原理

Apache Omid TSO 组件实现原理 作用 独立进程&#xff0c;处理全局事务之间的并发冲突。 流程 TSOChannelHandler#channelRead -> AbstractRequestProcessor -> PersistenceProcessorHandler 总体流程 thread1TSOChannelHandler#channelReadAbstractRequestProcess…

c语言唯一一个三目运算符

条件表达式由两个符号&#xff08;&#xff1f;和&#xff1a;&#xff09;组成&#xff0c;必须一起使用。要求有三个操作对象&#xff0c;称为三目运算符。 一般形式为 表达式1&#xff1f;表达式2&#xff1a;表达式3 理解如下&#xff1a; a>b?(maxa):(maxb); //相当…

微调 Florence-2 - 微软的尖端视觉语言模型

Florence-2 是微软于 2024 年 6 月发布的一个基础视觉语言模型。该模型极具吸引力&#xff0c;因为它尺寸很小 (0.2B 及 0.7B) 且在各种计算机视觉和视觉语言任务上表现出色。 Florence 开箱即用支持多种类型的任务&#xff0c;包括: 看图说话、目标检测、OCR 等等。虽然覆盖面…

Win10+Docker环境使用YOLOv8 TensorRT推理加速

这一部分内容和WSL-Ubuntu20.04环境使用YOLOv8 TensorRT推理加速-CSDN博客 是基本相同的,有细微差别我也会在文中指出来。 1.TensorRTX下载 这里使用Wang-xinyu大佬维护的TensorRTX库来对YOLOv8进行推理加速的演示,顺便也验证一下前面环境配置的成果。 github地址:GitHub -…

【STM32 ARM】操作寄存器控制led

文章目录 前言GPIO操作方法led原理图设置时钟APB的概念 设置APB设置输出引脚设置引脚高低电平寄存器寻找寄存器地址 总结 前言 STM32是STMicroelectronics&#xff08;意法半导体&#xff09;公司的一款32位Flash微控制器产品&#xff0c;基于ARM Cortex™-M内核。STM32系列微…

NDK R25b 交叉编译FFMpeg4,项目集成,附库下载地址

1.准备工作 文件下载&#xff1a; NDK R25b下载地址&#xff1a;Android NDK历史版本下载网址 - 君*邪 - 博客园 (cnblogs.com) FFmpeg4.4.4 下载地址&#xff1a;https://ffmpeg.org/releases/ffmpeg-4.4.4.tar.xz 环境配置&#xff1a; 本次编译环境是在PC虚拟机中使用U…

【LeetCode力扣】006. Z 字形变换(Python)

最快解法 参考了运行时间最短的代码&#xff0c;其使用的思路就是按列排序后连接。 class Solution:def convert(self, s: str, numRows: int) -> str:if numRows < 2 : # numRows1时候&#xff0c;对应输出为原字符串return sn len(s)lst [ for _ in range(numRows…

“论软件维护方法及其应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 软件维护是指在软件交付使用后&#xff0c;直至软件被淘汰的整个时间范围内&#xff0c;为了改正错误或满足 新的需求而修改软件的活动。在软件系统运行过程中&#xff0c;软件需要维护的原因是多种多样的&#xff0c; 根据维护的原因不同&#xff0c;可以将软件维护…

深入解析PHP框架:Symfony框架详解与应用

文章目录 深入解析PHP框架&#xff1a;Symfony框架详解与应用一、什么是Symfony&#xff1f;Symfony的优势 二、Symfony的核心概念1. 控制器2. 路由3. 模板4. 服务容器5. 事件调度器 三、Symfony的主要功能1. 表单处理2. 数据库集成3. 安全性4. 国际化5. 调试与日志 四、开发流…

PostgreSQL使用(三)

说明&#xff1a;本文介绍PostgreSQL的数据类型和运算符&#xff1b; 数据类型 常用的数据类型如下&#xff1a; 运算符 如下&#xff1a; 运算符的优先级如下&#xff1a; 不需要强记硬背&#xff0c;只需要记住括号可以提高运算符的优先级即可&#xff1b; 总结 本文介绍…

基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例

在水利、环境、生态、机械以及航天等领域中&#xff0c;数学模型已经成为一种常用的技术手段。同时&#xff0c;为了提高模型的性能&#xff0c;减小模型误用带来的风险&#xff1b;模型的优化技术也被广泛用于模型的使用过程。模型参数的快速优化技术不但涉及到优化本身而且涉…

Ubuntu上安装配置samba服务

Ubuntu上安装配置samba服务 在Ubuntu中安装配置samba共享服务&#xff0c;可以让你在网络上共享文件和打印机。以下是一个相对详细的步骤指南&#xff0c;介绍如何在Ubuntu上安装和配置Samba。 1. 安装Samba 首先&#xff0c;需要安装Samba软件包。打开终端并运行以下命令&a…

微服务中的 “负载均衡策略” 简介

微服务中的负载均衡策略是确保系统高可用性和高性能的关键技术之一。这些策略通过合理地将请求分配给多个服务实例&#xff0c;以实现资源的优化利用和请求的均衡处理。 本文选取以下几种常见的微服务负载均衡策略&#xff0c;并对其功能作简要介绍&#xff1a; 轮询&#xf…