当前位置: 首页 > news >正文

Jenkins中Node节点与构建任务

目录

节点在 Jenkins 中的主要作用

1. 分布式构建

分布式处理

负载均衡

2. 提供不同的运行环境

多平台支持

特殊环境需求

3. 提高资源利用率

动态资源管理

云端集成

4. 提供隔离和安全性

任务隔离

权限控制

5. 提高可扩展性

横向扩展

高可用性

Jenkins 主服务器(Master)

Jenkins 从服务器(Agent)

准备节点环境

添加节点

建立任务

自动上线测试


 

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

 

节点在 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 主服务器(Master)

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

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页面查看,已经被新代码替换了,完成了点一下构建就可以上线项目。

相关文章:

Jenkins中Node节点与构建任务

目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…...

Leetcode3200. 三角形的最大高度

Every day a Leetcode 题目来源&#xff1a;3200. 三角形的最大高度 解法1&#xff1a;模拟 枚举第一行是红色还是蓝色&#xff0c;再按题意模拟即可。 代码&#xff1a; /** lc appleetcode.cn id3200 langcpp** [3200] 三角形的最大高度*/// lc codestart class Solutio…...

docker运行nginx挂载前端html页面步骤

1.常用docker命令 1.docker ps -a 查看所有容器 2.docker ps查看存活的容器 3.docker rm 删除容器 4.docker stop 停止容器运行 5.docker logs 容器id 查看容器日志 6.docker images 查看镜像 7.docker rmi 删除镜像 8.docker exec nginx nginx -s reload 重新加载conf文件…...

kafka部署以及常用命令详细总结

1环境准备 1.1ip规划 ip: 192.168.1.200 1.2配置主机名 #设置主机名 hostnamectl set-hostname node11.3配置hosts [rootnode1 ~]# cat >> /etc/hosts << EOF192.168.1.200 node1 EOF2部署 2.1安装包准备 将以下安装包从官网下载到本地 jdk-8u371-linux-x6…...

代码随想录算法训练营第29天|LeetCode 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

1. LeetCode 134. 加油站 题目链接&#xff1a;https://leetcode.cn/problems/gas-station/description/ 文章链接&#xff1a;https://programmercarl.com/0134.加油站.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1jA411r7WX 思路&#xff1a; 贪心&#xff…...

代理模式(大话设计模式)C/C++版本

代理模式 C #include <iostream> using namespace std;class Subject // Subject 定义了RealSubject和Proxy的共用接口..这样就在任何使用RealSubject的地方都可以使用Proxy { public:virtual void func(){cout << "Subject" << endl;} };class R…...

本人学习保存-macOS打开Navicat提示「“Navicat Premium”已损坏,无法打开。 你应该将它移到废纸篓。」的解决方法

新安装了macOS Ventura&#xff0c;打开Navicat Premium&#xff0c;发现会提示&#xff1a; “Navicat Premium”已损坏&#xff0c;无法打开。 你应该将它移到废纸篓。 遇到这种情况&#xff0c;千万别直接移到废纸篓&#xff0c;是有办法解决的。在这里记录一下解决方案。 …...

《Cross-Image Pixel Contrasting for Semantic Segmentation》论文解读

期刊&#xff1a;TPAMI 年份&#xff1a;2024 摘要 研究图像语义分割问题。目前的方法主要集中在通过专门设计的上下文聚合模块(如空洞卷积、神经注意力)或结构感知的优化目标(如iou样损失)挖掘"局部"上下文&#xff0c;即单个图像中像素之间的依赖关系。然而&…...

技术周总结 2024.07.08~07.14(算法,Python,Java,Scala,PHP)

文章目录 一、07.13 周六1.0&#xff09;算法题&#xff1a;字符串中的单词反转1.1&#xff09; 问题01:可靠性计算中的MTTR MTTF MTBF 分别指什么&#xff1f;他们之间有什么联系&#xff1f;MTTR (Mean Time to Repair)MTTF (Mean Time to Failure)MTBF (Mean Time Between F…...

UnityECS学习中问题及总结entityQuery.ToComponentDataArray和entityQuery.ToEntityArray区别

在Unity的ECS&#xff08;Entity Component System&#xff09;开发中&#xff0c;entityQuery.ToComponentDataArray<T>(Allocator.Temp) 和 entityQuery.ToEntityArray(Allocator.Temp) 是两种不同的方法&#xff0c;用于从实体查询中获取数据。除了泛型参数之外&#…...

[python]基于yolov10+gradio目标检测演示系统设计

【设计介绍】 YOLOv10结合Gradio实现目标检测系统设计是一个结合了最新目标检测技术和快速部署框架的项目。下面将详细介绍这一系统的设计和实现过程。 一、YOLOv10介绍 YOLOv10是YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本&#xff0c;由清华大学的研究…...

浏览器开发者视角及CSS表达式选择元素

点击想要查看的接口&#xff0c;然后点击检查&#xff0c;便可以切换到该接口对应的html代码 如果F12不起作用的话&#xff0c;点击更多工具&#xff0c;然后选择开发者工具即可 ctrlF可以去查阅相关的CSS表达式选择元素 如果没有加#t1&#xff0c;那么表示的是选择所有的p 使用…...

GuLi商城-商品服务-API-品牌管理-统一异常处理

每个方法都加这段校验太麻烦了 准备做一个统一异常处理@ControllerAdvice 后台代码: package com.nanjing.gulimall.product.exception;import com.nanjing.common.exception.BizCodeEnum; import com.nanjing.common.utils.R; import lombok.extern.slf4j.Slf4j; import org…...

VUE+Spring Flux实现SSE长连接

VUE代码 // 初始化EventSourceinitEventSource(url) {const token getAccessToken();const eventSource new EventSourcePolyfill(url, {headers: {Authorization: Bearer ${token},tenant-id: getTenantId(),}});eventSource.onerror (e) > {console.log("SSE连接错…...

C#实现Winform程序右下角弹窗消息提示

前言 消息通知在应用程序中&#xff0c;是一种非常有用的功能&#xff0c;实现对一些重要信息、提醒或警告及时向用户展示。我们在使用软件时&#xff0c;通常会收到一种从桌面右下角弹出的&#xff08;提示信息或广告&#xff09;信息框。本文将介绍使用 C# 实现此种方式的信息…...

Java三剑客:封装、继承、多态的魔法世界

第一章&#xff1a;封装的艺术 —— 保护你的宝藏 案例分析&#xff1a;银行账户系统 想象一下&#xff0c;你正在构建一个银行账户系统。每个账户都有一个余额&#xff0c;这个余额需要受到严格的保护&#xff0c;不能被随意修改。我们可以通过封装来实现这一目标。 示例代…...

0145__Linux的capability

https://zhuanlan.zhihu.com/p/693896673 Linux的capability深入分析&#xff08;1&#xff09;_linux 设置进程capprm-CSDN博客 cap_init(3) - Linux manual page...

# Redis 入门到精通(一)数据类型(4)

Redis 入门到精通&#xff08;一&#xff09;数据类型&#xff08;4&#xff09; 一、redis 数据类型–sorted_set实现时效性任务管理 1、sorted_set 类型数据操作的注意事项 score 保存的数据存储空间是64位&#xff0c;如果是整数范围是-9007199254740992~9007199254740992…...

西邮计科嵌入式复习

西邮嵌入式复习 一、第一章复习二、第二章复习三、第三章复习四、第四章复习 一、第一章复习 二、第二章复习 三、第三章复习 四、第四章复习...

Java如何使用 HttpClientUtils 发起 HTTP 请求

Java如何使用 HttpClientUtils 发起 HTTP 请求 一、前言1.HttpClientUtils 类概览2.解析 HttpClientUtils 类3.使用 HttpClientUtils 类 一、前言 在现代的软件开发中&#xff0c;经常需要与远程服务器进行通信&#xff0c;例如获取数据或发送数据。Apache HttpClient 是一个流…...

系统移植-STM32MP1_TF-A概述

文章目录 1 设备安全2 TF-A简介3 ARMv7和ARMv8权限等级3.1 ARMv7-A工作模式3.2 ARMv8工作模式 4 TF-A不同启动阶段4.1 bl14.2 bl24.3 bl314.4 bl324.5 bl33 5 STM32MP1中的TF-A5.1 STM32MP1_TF-A框架5.1.1 STM32MP1下的bl15.1.2 STM32MP1下的bl25.1.3 STM32MP1下的bl325.1.4 ST…...

Maven项目实战:用Apache PDFBox 2.0.27实现PDF批量转PNG(附完整代码)

Maven项目实战&#xff1a;用Apache PDFBox 2.0.27实现PDF批量转PNG&#xff08;附完整代码&#xff09; 在Java开发者的日常工作中&#xff0c;PDF文档处理是一个高频需求场景。无论是电子合同归档、报表生成还是文档预览&#xff0c;将PDF转换为图片都是刚需功能。Apache PDF…...

OpenClaw多账户管理:ollama-QwQ-32B模型服务同时支持多个飞书机器人

OpenClaw多账户管理&#xff1a;ollama-QwQ-32B模型服务同时支持多个飞书机器人 1. 为什么需要多账户管理&#xff1f; 去年我们团队在尝试用OpenClaw实现自动化办公时&#xff0c;遇到了一个典型问题&#xff1a;市场部和研发部都需要使用同一个ollama-QwQ-32B模型服务&…...

ncmdumpGUI+解决网易云音乐NCM文件跨设备播放痛点

ncmdumpGUI解决网易云音乐NCM文件跨设备播放痛点 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 问题场景&#xff1a;被加密的音乐自由 想象这样的场景&…...

基于51单片机与HX711的智能电子秤Proteus仿真与计价系统实现

1. 项目背景与核心功能 最近在整理实验室材料时&#xff0c;发现很多同学对电子秤项目的仿真实现存在困惑。这个基于51单片机和HX711的智能电子秤系统&#xff0c;不仅能够完成基础称重&#xff0c;还能实现商品计价、LCD显示等完整超市电子秤功能。我在实际调试中发现&#xf…...

STLM20DD9F温度传感器驱动库解析与STM32工程实践

1. STLM20DD9F温度传感器驱动库深度解析与工程实践1.1 器件特性与选型依据STLM20DD9F是意法半导体&#xff08;STMicroelectronics&#xff09;推出的高精度、低功耗模拟输出温度传感器&#xff0c;采用SOT-23-5封装&#xff0c;专为嵌入式系统中的环境与结温监测而设计。其核心…...

从‘基’到‘坐标变换’:用Python和NumPy手把手理解线性空间的‘换地图’操作

从‘基’到‘坐标变换’&#xff1a;用Python和NumPy手把手理解线性空间的‘换地图’操作 想象一下&#xff0c;你正在使用导航软件规划路线。同一个地点&#xff0c;在高德地图和百度地图上显示的坐标可能完全不同——这就像线性代数中的基变换。本文将用Python代码和可视化手…...

G-Helper:华硕笔记本轻量级硬件控制开源工具全解析

G-Helper&#xff1a;华硕笔记本轻量级硬件控制开源工具全解析 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: …...

从国赛真题到实战演练:蓝桥杯CTF网络安全竞赛核心题型深度剖析

1. 逆向工程实战&#xff1a;从加密程序到Flag还原 去年蓝桥杯CTF国赛的第一道逆向题让不少选手印象深刻。题目给出一个名为encodefile的可执行程序和一个加密后的数据文件enc.dat&#xff0c;要求还原原始flag内容。这类题型在CTF中非常典型&#xff0c;主要考察选手对程序逻辑…...

Rolify 项目部署指南:从开发环境到生产环境的完整迁移流程

Rolify 项目部署指南&#xff1a;从开发环境到生产环境的完整迁移流程 【免费下载链接】rolify Role management library with resource scoping 项目地址: https://gitcode.com/gh_mirrors/ro/rolify Rolify 是一款功能强大的角色管理库&#xff0c;支持资源范围的权限…...