Jenkins - 分布式构建
1 - 简介
Jenkins支持分布式多节点(Master-Slave)运行模式。
将安装Jenkins的主机作为Master节点,然后通过界面配置(或远端启动服务)来添加Slave节点。
在这种部署结构下,Master通常只充当管理者的角色,负责任务的调度,slave节点的管理,任务状态的收集等工作,具体的构建任务则会分配给slave节点。
一个Master节点理论上可以管理的slave节点数是没有上限的,但通常随着数量的增加,其性能以及稳定性就会有不同程度的下降,具体的影响则因Master硬件性能的高低而不同。
多节点(Master-Slave)部署通常以“Jenkins + Docker”的方式来部署,可以避免当测试用例变得海量以后可能会造成的一些问题。
通常规模较大,代码提交频繁(意味着构建频繁),自动化测试压力较大的项目都会采取这种部署结构。
2 - Slave节点
Slave节点实际上在其他主机上运行的agent进程,无需再安装完整的Jenkins服务。
通过建立双向的TCP/IP通信连接来实现启动Slave节点上的agent进程。
2.1 创建全新的Slave节点
系统管理--》节点管理--》新建节点
配置节点基本信息
2.2 关键配置说明
并发构建数
- 该节点可以并行的最大任务数,建议和CPU内核数相等
远程工作目录
- Salve节点的workplace目录,存放一些源码和文件
标签
- 用来表示节点的群组,在配置任务时可以指定对应的群组
用法
- 尽可能使用这个节点:被Jenkins随机调用
- 只允许运行绑定到这台机器的job:当任务指定使用该节点时,才会使用,适合特定任务和资源紧张的场景
启动方式(Launch slave agents via SSH)
- Jenkins通过SSH方式自动连接到远端节点并传送agent启动文件slave.jar,然后通过java方式启动一个Slave agent进程
- 无需对Slave节点进行任何配置操作,推荐使用。
启动方式(Launch agent via execution of command on the master)
- 在Master节点上通过SSH远程在Slave节点执行指令来启动agent程序
- 需要事先将Slave.jar放到到Slave节点
启动方式(Launch agent via Java Web Start)
- 可以连接Windows Slave节点
- 需要Slave节点主动连接到Master节点,适合设置没有主动访问权限的节点
可用性
- 控制启动和停止该节点的模式
节点属性
- 工具位置:如果设置Slave节点的工具执行路径,将覆盖全局配置的默认路径
- 环境变量:如果设置Slave节点的同名环境变量,将覆盖系统全局变量的值
2.3 查看状态
系统管理--》节点管理
系统管理--》节点管理--》 laveNode-192.168.16.203
3 - Slave节点启动日志
系统管理--》节点管理--》SlaveNode-192.168.16.203---》日志
SSHLauncher{host='192.168.16.203', port=22, credentialsId='e6ae3eab-fbe7-406e-bf12-8d13deaf308a', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=210, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.NonVerifyingKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[12/04/19 09:06:38] [SSH] Opening SSH connection to 192.168.16.203:22.
[12/04/19 09:06:38] [SSH] WARNING: SSH Host Keys are not being verified. Man-in-the-middle attacks may be possible against this connection.
[12/04/19 09:06:38] [SSH] Authentication successful.
[12/04/19 09:06:38] [SSH] The remote user's environment is:
BASH=/usr/bin/bash
BASHOPTS=cmdhist:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_EXECUTION_STRING=set
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'
DIRSTACK=()
EUID=0
GROUPS=()
HOME=/root
HOSTNAME=node203
HOSTTYPE=x86_64
ID=0
IFS=$' \t\n'
LANG=en_US.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LOGNAME=root
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/mail/root
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
PIPESTATUS=([0]="0")
PPID=3026
PS4='+ '
PWD=/root
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=1
SSH_CLIENT='192.168.16.102 53268 22'
SSH_CONNECTION='192.168.16.102 53268 192.168.16.203 22'
TERM=dumb
UID=0
USER=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
XDG_RUNTIME_DIR=/run/user/0
XDG_SESSION_ID=12
_=/etc/bashrc
flatpak_dirs=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/
command_not_found_handle ()
{
local runcnf=1;
local retval=127;
[[ $- =~ i ]] || runcnf=0;
[[ ! -S /run/dbus/system_bus_socket ]] && runcnf=0;
[[ ! -x '/usr/libexec/packagekitd' ]] && runcnf=0;
[[ -n ${COMP_CWORD-} ]] && runcnf=0;
if [ $runcnf -eq 1 ]; then
'/usr/libexec/pk-command-not-found' "$@";
retval=$?;
else
if [[ -n "${BASH_VERSION-}" ]]; then
printf 'bash: %scommand not found\n' "${1:+$1: }" 1>&2;
fi;
fi;
return $retval
}
[12/04/19 09:06:38] [SSH] Checking java version of /jenkins-data/jdk/bin/java
Couldn't figure out the Java version of /jenkins-data/jdk/bin/java
bash: /jenkins-data/jdk/bin/java: No such file or directory
[12/04/19 09:06:38] [SSH] Checking java version of java
[12/04/19 09:06:39] [SSH] java -version returned 1.8.0_161.
[12/04/19 09:06:39] [SSH] Starting sftp client.
[12/04/19 09:06:39] [SSH] Remote file system root /jenkins-data does not exist. Will try to create it...
[12/04/19 09:06:39] [SSH] Copying latest remoting.jar...
[12/04/19 09:06:39] [SSH] Copied 872,440 bytes.
Expanded the channel window size to 4MB
[12/04/19 09:06:39] [SSH] Starting agent process: cd "/jenkins-data" && java -jar remoting.jar -workDir /jenkins-data -jar-cache /jenkins-data/remoting/jarCache
Dec 04, 2019 5:06:41 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /jenkins-data/remoting as a remoting work directory
Dec 04, 2019 5:06:41 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Both error and output logs will be printed to /jenkins-data/remoting
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 3.33
This is a Unix agent
Evacuated stdout
Agent successfully connected and online
4 - 执行pipeline任务
4.1 建立流水线任务
4.2 构建
4.3 查看输出
控制台输出
查看Blue Ocean
Jenkins - 分布式构建的更多相关文章
- Jenkins分布式构建
Jenkins分布式构建 有时,如果有一个实例,它是一个更大,更重的项目,需要定期编译生成在许多计算机上.并运行所有这些构建了中央台机器上可能不是最好的选择.在这种情况下,人们可以配置其他Jenkin ...
- Jenkins分布式构建与并行构建
Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是"master+agent(slave)"架构.Jenkins master负责提供界面.处理HTT ...
- 06 . Jenkins分布式构建和Pipline
Pipline简介 pipline 是帮助 Jenkins 实现 CI 到 CD 转变的重要角色,是运行在 jenkins 2.X 版本的核心插件,简单来 说 Pipline 就是一套运行于 Jenk ...
- 连载三:RobotFramework+Selenium+Jenkins分布式构建
目标:Jenkins安装在服务器上,而使用Jenkins调用本机的脚本并在本机执行. 步骤: (1)需要有RobotFrameWork+Selenium的运行环境: python2.7,Robotfr ...
- Jenkins 分布式和并发构建
1. 分布式构建 1.1 添加 linux 节点 1.2 添加 windows 节点 2. 并发构建 2.1 原理 2.2 示例:分别用 chrome/IE/Firefox 并行测试 1. 分布式构建 ...
- Jenkins分布式部署配置
为什要使用Jenkins分布式? 利用jenkins分布式来构建job,当job量足够大的时候,可以有效的缓解jenkins-master上的压力,提高并行job数量, 减少job处于pending状 ...
- jenkins 分布式部署
一 什么是Jenkins的分布式构建和部署 Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows7\winxp和Linux系统 ...
- 基于Jenkins自动构建系统开发
1 绪论 1.1 课题的研究背景 随着IT行业的不断发展,软件开发的复杂度也随着不断提高.与此同时,软件的开发团队也越来越庞大,而如何更好地协同整个团队进行高效准确的工作,从而确保软件开发的质量已经 ...
- Jenkins分布式与并行
目录 一.简介 二.agent 通过JNLP协议增加agent 通过Swarm插件增加agent agent部分详解 三.agent放入Docker 使用Docker 配置Docker私有仓库 四.并 ...
随机推荐
- Discuz! X3 数据字典
pre_common_admincp_cmenu 后台菜单收藏表 字段名 数据类型 默认值 允许非空 自动递增 备注 id smallint(6) unsigned NO 是 title v ...
- 20180519模拟赛T2——pretty
[问题描述] 小美今天对于数列很有兴趣.小美打算找出一些漂亮的序列.一个漂亮的序列的限制如下: 长度为 n ,而且数列里只包含 [1,n] 的整数. 要不是不降的序列就是不升的序列. 小美想知道有多少 ...
- python基础语法14 面向对象
面向对象 1.什么是面向对象? 面向对象是一门编程思想! - 面向过程编程思想: 核心是 “过程” 二字,过程指的是解决问题的步骤,即先干什么再干什么! 基于该编程思想编写程序,就好比在设计一条工厂流 ...
- scanner=new Scanner(System.in); int i=scanner.nextInt();
import java.util.Scanner; public class TryScanner { /** * @param args */ public static void main(Str ...
- 11.06水题Test
11.06水题比赛 题目 描述 做法 \(BSOJ5150\) 求\(n\)个数两两之差的中位数 二分中位数,双指针判定\(\le x\)差值对数 \(BSOJ5151\) 求树的最大匹配和其个数 来 ...
- isopod dsl 框架管理kubernetes 配置
isopod 是一个包含了丰富能力的dsl 框架我们可以不用编写yaml 文件来进行k8s 管理 说明 语法类似python,目前移植内置了一些不错的功能kube 方法 vault 集成,helm 集 ...
- spl_autoload_register 和 __autoload()魔术方法
在 PHP 5.3 之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误(Fatal Error). 尽管 __autoload() 函数也能自动加载类和接口 ...
- [图形计算器]Desmos
一.图形计算器 var elt = document.getElementById('calculator'); var calculator = Desmos.GraphingCalculator( ...
- Cisco路由器用SSH替代Telnet连接
本文告诉你若何用SSH替代Telnet. 使用Telnet这个用来访谒远程计较机的TCP/IP和你的用户名和口令.很快地,会有人进行监听,而且他们会操作你平安是因为你意识的缺乏. SSH是替代Teln ...
- Spring Transaction 使用入门
一.开篇陈述 1.1 写文缘由 最近在系统学习spring框架IoC.AOP.Transaction相关的知识点,准备写三篇随笔记录学习过程中的感悟.这是第一篇,记录spring Transactio ...