【Jenkins基础知识学习笔记】

article/2025/9/25 17:11:28

文章目录

  • 1、Master/Slave架构
  • 2、搭建步骤
  • 3、工作流程
  • 4、配置建议
  • 5、通信方式
  • 参考文档


1、Master/Slave架构

Jenkins采用Master/Slave架构,Master/Slave相当于Server和agent的概念,Master提供web接口让用户来管理Job和Slave,Job可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave,为不同的Job或相同的Job的不同配置来服务。
Jenkins的Master/Slave机制除了可以并发的执行构建任务,加速构建以外,还可以用于分布式自动化测试,当自动化测试代码非常多或者是需要在多个浏览器上并行的时候,可以把测试代码划分到不同节点上运行,从而加速自动化测试的执行。
Master:主要是处理调度构建作业,把构建分发到Slave节点实际执行,监视Slave节点的状态。当然,并不是说Master节点不能跑任务。构建结果和构建产物最后还是传回到Master节点,比如说在jenkins工作目录下面的workspace内的内容,在Master节点照样是有一份的。
Slave:执行机(奴隶机)。执行Master分配的任务,并返回任务的进度和结果。
当job被分配到slave上运行的时候,此时master和slave其实是建立的双向字节流的连接。
在这里插入图片描述

  • Master—>Slave:
    管理slave,并分配调度任务;
  • Slave—>Master:
    反馈slave状态(空闲或忙碌),反馈任务进度和结果等;

2、搭建步骤

Jenkins Master/Slave的搭建需要至少两台机器,一台Master节点,一台Slave节点(实际生产中会有多个Slave节点)。
Jenkins分布式环境搭建步骤如下:
(1)前提:Master和Slave都已经安装JDK 1.8或更高版本
(2)Master节点上安装和配置Jenkins
(3)Master节点上新增Slave节点配置,生成Master-Slave通讯文件SlaveAgent
(4)Slave节点上运行SlaveAgent,通过SlaveAgent实现和Master节点的通讯
(5)Master节点上管理Jenkins项目,指定Slave调度策略,实现Slave节点的任务分配和结果收集来源。

3、工作流程

常规工作流程大概如下:
1、工作人员将新版本代码push到代码仓库,如git server (Gitlab)。
2、Gitlab随后触发jenkins master节点进行一次build。
(通过webhook或者定时检测)
3、jenkins master节点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。
这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等,这些原本需要手动完成的任务都可以交给jenkins来做。

4、配置建议

每个slave都有用户jenkins,所有的机器使用相同的UID和GID,使得slave的管理更加简单;
每个机器上jenkins用户的home目录都相同, 即/home/jenkins, 拥有相同的目录结构使得维护简单;
所有的slave运行sshd,windows运行cygwin sshd;
所有的slave安装ntp client,用来与相同的ntp server同步;
使用脚本sh来自动地配置slave的环境,例如创建jenkins用户,安装sshd,安装java,ant,maven等;
使用脚本来启动slave,保证slave总是运行在相同的参数下:
#!/bin/bash JAVA_HOME=/opt/SUN/jdk1.8.0_04 PATH= P A T H : PATH: PATH:JAVA_HOME/bin export PATH java -jar /var/jenkins/bin/slave.jar


5、通信方式

Jenkins的Master和Slave之间的通信方式,常用的Master和Slave节点连接的方式是ssh或JNLP。
(1)ssh:对于Slave Node是linux系统,最方便的就是通过ssh启动jenkins节点,但这个的前提是Master和Slave之前能进行ssh连接。
(2)jnlp:jnlp连接有个好处就是不需Master和Slave之间能够ssh连接,只需能ping即可。Slave Node是windows的话,这个方式十分实用,因为有时候一些权限或者防火墙的原因,导致Master和Slave不能够ssh连接;还有一些未知的原因导致无法ssh到Slave Node。(注意:通过JNLP连接有下面的缺点:从节点不能被jenkins自动启动或者重启,因此,如果从节点,发生故障,则master是无法重启它的,得去slave节点去看。)

参考文档

Jenkins学习(3)-Jenkins的Master/Slave机制,及添加Slave节点操作:https://www.cnblogs.com/yickel/p/12206838.html
jenkins原理简析:https://www.cnblogs.com/betterquan/p/11635399.html
jenkins中slave节点连接的两种常用方式:https://www.cnblogs.com/qstudy/p/9690824.html
Linux下ping,telnet,ssh命令的比较:
https://www.cnblogs.com/geeklove01/p/8452567.html


http://chatgpt.dhexx.cn/article/dgrnUj8F.shtml

相关文章

Gherkin语法详解之Scenario outline(四)

如果我想要对于不同的数据集,重复一个场景的所有步骤?这是一个数据驱动测试的经典案例。这将通过使用一个场景大纲来实现

BDD - BDD Automation Framwork 自动化框架

BDD - BDD Automation Framwork 自动化框架 引言BDD 测试框架Jenkins 集成Framework Components 框架组件IDEs 集成开发环境NotepadEclipseJetBrains IntelliJ IDEAMicrosoft Visual Studio 引言 BDD 自动化框架使得 QA 工程师很容易将 Gherkin Scenarios 转换成自动化测试用例…

zipkin

zipkin zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。 architecture 如图,在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢? 日志: 通…

Cucumber之二Gherkin语言学习

在本教程中,我们将向您介绍Gherkin - BDD语言(业务驱动开发)。我们将尽力详细回答这些问题原文点击这里 免费英语视频教程可见微信公众号:【软测小生】里面,请关注公号更新相关文章和视频资源。 另外有一个中国团队在做类似的事情&#…

Artifactory 简介

产品特点 http://www.jfrogchina.com/artifactory/features/ 产品对比 https://binary-repositories-comparison.github.io/

pom文件里的groupId和artifactId是什么

在学习maven项目的时候发现所有pom文件里的<dependency>下有都有两个带Id的东东&#xff1a; 它们是什么&#xff1a; groupId&#xff1a;存储的包的路径&#xff0c;一般分为多段&#xff0c;第一段为域&#xff0c;第二段为公司名。。。。。。如图&#xff0c;org是域…

artifactId到底什么意思?

打开https://repo1.maven.org/maven2/org/apache/flink/flink-table-common/1.11.2/ 会看到: 对应的依赖是: <dependency><groupId>org.apache.flink</groupId><artifactId>flink-table-common</artifactId><version>1.11.2</version…

maven项目的groupId和artifactId什么意思?

首先要知道groupId和artifactId的存在是为了定位到你的项目&#xff0c;所以它们充当着坐标的角色。 groupId&#xff1a;group意思为组&#xff0c;所以理解为是组织Id&#xff0c;也是公司Id&#xff0c;通常它的写法与公司域名类似。一般分三段&#xff0c;即“域.公司名称.…

maven中的ArtifactId和groupId是什么

文章目录 1、了解2、举例3、说明 1、了解 之前建项目、用maven时常遇到GroupID和ArtifactID&#xff0c;一直说要弄清楚却迟迟拖延&#xff0c;今天查了一下&#xff0c;在这里做个小结。 最简单的来说&#xff1a;GroupID被俗称为包结构 ArtifactID被俗称为项目名 GroupId和…

maven中的groupId和artifactId是指什么?

groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的&#xff0c;如果你要把你项目放到maven本地仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。   groupId一般分为多个段&#xff0c;这里我只说两段&#xff0c;第一段为域&#xff0c;第二…

关于idea配置Spring后,在pom.xml中“<artifactId>spring-boot-maven-plugin</artifactId>”出现报红现象

(1&#xff09;出现问题&#xff0c;如图 当我们出现问题时&#xff0c;解决问题要从根源解决&#xff01; 介绍一个神奇的方法&#xff08;不建议使用&#xff09; 在<artifactId>spring-boot-maven-plugin</artifactId>下一行加上<version>2.3.5.RELEASE&l…

简单分享Maven中的groupId和artifactId

【辰兮要努力】&#xff1a;hello你好我是辰兮&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行&#xff01; 博客来源于项目以及编程中遇到的问题总结&#xff0c;偶尔会有读书分享&#xff0c;我会陆续更新Java前端、后台、…

<artifactId>spring-boot-maven-plugin</artifactId>报错问题

刚创建好项目就报错了&#xff0c;进入到maven库中Reposiory\org\springframework\boot\spring-boot-maven-plugin\下查看发现存在相关插件&#xff0c; 这种情况可以在pom.xml文件中补充上相应的版本号<version>2.3.5.RELEASE</version>&#xff0c;不知道应该补充…

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理

Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格&#xff0c;他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础&#xff0c;…

<artifactId>mysql-connector-java</artifactId>

// 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver");// 建立连接 String url "jdbc:mysql://localhost/database_name"; String username "username"; String password "password"; Connection conn DriverManager.…

Maven中的GroupID和ArtifactID指的是什么?

最近用Maven创建工程&#xff0c;一直搞不懂Maven中的GroupID和ArtifactID是什么&#xff0c;直到看了网上的一篇文章才明白&#xff0c;在此与大家分享分享 本文转载于一问网友的回答&#xff08;略修改&#xff09; 地址&#xff1a;https://zhidao.baidu.com/question/1639…

maven中groupId和artifactId的含义

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。 GroupId是项目组织的唯一标识符&#xff0c;在实际开发中对应JAVA的包的结构&#x…

Maven项目中依赖的groupId和artifactId标签的含义?

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。groupId是项目组织唯一的标识符&#xff0c;实际对应java包的结构&#xff0c;是main目…

<artifactId>spring-boot-maven-plugin</artifactId>爆红

加版本号&#xff0c;我的版本号如下 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.12.RELEASE</version> 加完后就不会报错 怎么找自己对应的版本号呢&#xff1f; …