没有可用软件包 jenkins。_Jenkins分布式构建与并行构建

Jenkins分布式构建与并行构建

jenkins的架构

Jenkins采用的是“master+agent(slave)”架构。Jenkins master负责提供界面、处理HTTP请求及管理构建环境;构建的执行则由Jenkins agent负责

Jenkins agent的横向扩容:只需要增加agent就可以轻松支持更多的项目同时执行

cc4a0e9a114831b016fdf3aa297636ba.png

• node:节点,指包含Jenkins环境及有能力执行项目的机器。master和agent都被认为是节点。

• executor:执行器,是真正执行项目的单元。一个执行器可以被理解为一个单独的进程(事实上是线程)。在一个节点上可以运行多个执行器。

• agent:代理,在概念上指的是相对于Jenkins master的一种角色,实际上是指运行在机器或容器中的一个程序,它会连接上Jenkins master,并执行Jenkins master分配给它的任务。

增加agent支持并行构建

Jenkins agent作为一个负责执行任务的程序,它需要与Jenkins master建立双向连接。连接方式有多种,这也代表有多种增加agent的方式。

标签是什么

当agent数量变多时,如何知道哪些agent支持JDK 8、哪些agent支持Node.js环境呢?我们可以通过给agent打标签(有时也称为tag)来确定。

同一个agent可以拥有多个标签。在标签名中不能包含空格,也不能包含!、&、|、<、>、(、)这些特殊字符中的任何一个。因为包含特殊字符的标签名与标签表达式(用于过滤agent)冲突。

通过JNLP协议增加agent

Java网络启动协议(JNLP)是一种允许客户端启动托管在远程Web服务器上的应用程序的协议。Jenkins master与agent通过JNLP协议进行通信。而Java Web Start(JWS)可以被理解为JNLP协议的一个客户端。

(1)进入Manage Jenkins→Global Security→TCP port for JNLP配置页面,如图所示。我们可以选择开放固定端口或者随机开放Jenkins master的一个端口来提供JNLP服务。

63692e8282d25127b1ab71dede2c0997.png

随机开放端口不利于自动化,所以选择开放固定端口。此端口用于master与agent之间的TCP通信,与访问Jenkins界面时的端口有别。

(2)进入Manage Jenkins→Manage Nodes→New Node页面,如图所示。选项“Permanent Agent”指的是常驻代理客户端。

226a9a4dd4b30448a718275b206367b1.png

单击“OK”按钮后,进入node配置页面

cfb5b0117aeac88219878eb21e4dcb10.png

• Name:agent名称。

• Remote root directory:agent机器上的工作目录(Jenkins master不关心),使用绝对路径。

• Labels:agent的标签。

• Usage:agent的使用策略。有两种:

​ ◦ Use this node as much as possible,尽可能使用此agent。

​ ◦ Only build jobs with label expressions matching this node,只有当构建任务符合本agent的标签时,才使用此agent。

• Launch method:agent的运行方式。JNLP协议的agent选择“Launch agent via Java WebStart”。配置完成后进入节点列表页面,此时master节点的状态显示是在线的,即可用的

undefined_b.jpg

当节点不可用时,如node1节点,Jenkins master不再分配任务给它

86d942b2b42496c25e36bf61409da502.png

(3)单击节点列表中的node1,跳转到“Agent node1”页面,显示详情如图所示。

JNLP协议agent连接Jenkins master还有3种方式。一是在agent机器的浏览器中打开此页面,单击“Launch”按钮。二是通过javaws命令从master节点下载Java Web Start程序。三是无界面方式连接。第3种方式不需要界面操作,我们毫不犹豫地选择它,因为只有这样才方便自动化。

a2a52f538f00ba3994cd9f9f09f8be03.png

(4)SSH登录到Jenkins agent机器,下载agent.jar文件(JNLP协议的客户端),下载路径为:<Jenkins master地址>/jenkins/jnlpJars/agent.jar。假设这台机器已经安装好JDK,则执行命令:java-jar agent.jar-jnlpUrl http://192.168.23.11:8667/jenkins/computer/node1/slave-agent.jnlp-workDir "/app"。其中-workDir参数用于指定agent的工作目录。当命令提示连接成功后,我们打开Jenkins master页面,查看node1的详情页,如图所示,表示已经连接成功。

6d592853663c6f9c7ac9f03e80e20432.png

agent与master之间的连接过程没有任何权限控制。这是因为我们没有设置Jenkins的安全控制(默认Jenkins向匿名用户开放所有权限)。当设置了安全控制后,新建node,我们将在node的详情页看到连接master的命令就变成了:

undefined_b.jpg

其中-secret**就是agent与master之间的连接凭证。每一个JNLP客户端的凭证都不一样。

提示:升级Jenkins后,也需要重新下载agent.jar。agent.jar需要与Jenkins master同步升级。

最后,我们看到通过JNLP协议增加agent的方式是需要在Jenkins界面上进行手动操作的(增加节点的操作)。这部分是无法自动化的,因此,我们只在以下场景中使用这种方式。

• 在安全性要求相对较高的情况下,只能手动增加agent。

• 增加Windows agent。

通过Swarm插件增加agent

Swarm插件只需要启动Swarm客户端(指定Jenkins master地址),master与agent就会自动建立连接。

(1)安装Swarm插件。

(2)确保Jenkins agent机器上安装有JDK。

(3)在Jenkins agent机器上下载Swarm客户端

(4)在Jenkins agent上启动swarm-client连接服务器端。

undefined_b.jpg

当日志显示连接成功后,在节点列表页面可以看到Swarm客户端连接成功

undefined_b.jpg

swarm-client部分参数的介绍。

•-deleteExistingClients:如果Jenkins master上已经存在同名的node,则先删除。(慎用)

•-description:描述。

•-disableClientsUniqueId:默认Swarm会在node名称后加上一个唯一ID。加上此参数后,代表取消加上唯一ID。

•-disableSslVerification:取消SSL校验。

•-executors N:设置executor的个数。

•-labels VAL:分配给agent的标签,如果有多个,则使用空格分隔。注意,这是给agent打标签。

•-master VAL:指定Jenkins master的URL。

•-mode MODE:Jenkins master分配项目给agent时使用的格式,即有两种格式,即normal(尽可能分配job)和exclusive(当与指定label匹配时才分配项目)。

•-username VAL:连接时使用的用户名。

•-password VAL:连接时使用的密码。不推荐使用。

•-passwordEnvVariable VAL:从环境变量中读取密码。推荐使用。

•-passwordFile VAL:从文本文件中读取密码。推荐使用。

•-retry N:最大重连次数,默认无次数限制。

•-retryInterval N:每次重连间隔时长,单位为秒。默认值为10秒。

agent部分详解

如何在pipeline中使用标签呢

agent部分描述的是整个pipeline或在特定阶段执行任务时所在的agent。换句话说,Jenkinsmaster根据此agent部分决定将任务分配到哪个agent上执行。agent部分必须在pipeline块内的顶层定义,而stage块内的定义是可选的。

9d491387d510a6208a939de3ebf9145d.png

agent any告诉Jenkins master任何可用的agent都可以执行。

agent部分的定义可以放在阶段中,用于指定该stage执行时的agent。

89ed58fbc1233bc78f54c768867a963a.png

注意:pipeline块内的agent部分是必需的,不能省略。

通过标签指定agent:

当pipeline需要在JDK 8环境下进行构建时,就需要通过标签来指定agent。代码如下:

88b255a29e47e864f96a5cd5a898f69c.png

有些构建任务是需要在JDK 8及Windows环境下执行的。也就是说,我们需要过滤同时具有windows和jdk8标签的agent。

dbdb60b03b34641f52eb3da9254f263c.png

上文中,在增加agent时,已经配置好了该agent上的默认工作目录路径,但是agent部分允许我们对工作目录进行自定义。node除了label选项,还提供了另一个选项——customWorkspace,自定义工作目录,写法如下:

d2ba2a7e079c34f6448ac0be4b336823.png

customWorkspace选项除了写绝对路径,还可以写相对于默认工作目录路径的相对路径。

不分配节点 : agent none

when指令的beforeAgent选项 :

在默认情况下,阶段内所有的代码都将在指定的Jenkins agent上执行。when指令提供了一个beforeAgent选项,当它的值为true时,只有符合when条件时才会进入该Jenkins agent。这样就可以避免没有必要的工作空间的分配,也就不需要等待可用的Jenkins agent了。在某些场景下,beforeAgent选项通常用于加速pipeline的执行。示例如下:

fb88ba389fae90c011bf4b1eedf297e6.png

只有分支为production时,才会进入“Example Deploy”阶段。这样就可以避免在some-label的agent中拉取代码,从而达到加速pipeline执行的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qstring去掉特定字符_如何花式、批量且操作简单地处理字符?

文本字符的规范化,是批量处理的前提。多来源数据或是数据收集本身就必然存在不规范情况,于是批量地完成它就成了常见的需求。对于花式批量处理,自然要说到正则表达式。“正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好…

性能度量RMSE

回归问题的典型性能度量是均方根误差(RMSE:Root Mean Square Error)。如下公式。 m为是你计算RMSE的数据集中instance的数量。x(i)是第i个实例的特征值向量 ,y(i)是其label(期望的模型输出)。如下:X是包含了所有实例的…

【数学建模】day02-整数规划

基本类似于中学讲的整数规划--线性规划中变量约束为整数的情形。 目前通用的解法适合整数线性规划。不管是完全整数规划(变量全部约束为整数),还是混合整数规划(变量既有整数又有实数),MATLAB都提供了通用的求解函数。 一、0-1型整数规划 这类规划将变量…

VMware的linux虚拟机实现和windows的文件共享

使用的centos7和windows10,在虚拟机centos7中是root身份。由于是第一次用没有界面的linux,可谓是困难重重…… 一 打开VMware,然后选中你的虚拟机,我的是centos7。然后点击工具栏”虚拟机“,然后选择”安装VMware tool…

javascript进制转换_「js基础」JavaScript逻辑和位运算符归纳

上一篇文章呢,我们讲述了JavaScript运算符中的关系运算符和逻辑运算符,那么紧接上一篇的文章我们今天来说说逻辑运算符。引言逻辑运算符不是很难,也不是很多,我们只要记住三个就可以啦!分别是:!…

〖强暴贴〗号称全国最大开发者网络的CSDN多次出现低级错误 验证码形同虚设 开发人员竟是MVP

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow主  题:【醒目】〖强暴贴〗号称全国最大开发者网络…

弟子规python编程游戏_《Python游戏趣味编程》 第11章 消灭星星

知乎视频​www.zhihu.com图书简介可以看这里:童晶:《Python游戏趣味编程》新书上架了​zhuanlan.zhihu.com消灭星星是一款非常容易上瘾的消除类游戏,只需点击一个方块,如果和其连接的有两个或两个以上颜色相同的方块即可消除&…

python判断英文字母_python判断字符串中是否含有英文 | 个人学习笔记记录

第一种方法: #-*- coding:utf-8 -*- import re def check(str): my_re re.compile(r[A-Za-z],re.S) res re.findall(my_re,str) if len(res): print u含有英文字符 else: print u不含有英文字符 if __name__ __main__: str 你好123hello check(str) str1 你好1…

idea ssm项目移包报错问题

写完代码之后发现包结构太乱了 想要规划一下 结果报错 这里面的包路径都可以点进去,还是报找不到com.lf.company.entity.Business 后来发现是 在移动前和移动后都存在这个mapper。xml 解决方案: 在这里把多余的删掉转载于:https://www.cnblogs.com/NCL…

matlab 写excel 慢_吐槽一下MATLAB的workspace

用MATLAB编程,或者Simulink建模仿真,有一个特别强大、特别人性化的功能,可以在workspace中直接查看定义的参数和运行的结果 无论是仿真的调试,结果的分析,或是中途的Debug,workspace都发挥着至关重要的作用…

MATLAB 图形着色

1.matlab中的颜色查找表函数: (1)autumn:从红色向橘黄色、黄色平稳过渡; (2)bone:为含有较高的蓝色组分的gray颜色查找表; (3)colorcube:包含RGB颜…

大学python笔记_Python 上手笔记

要是想在键盘上体验一下, 安装Python也很简单: 基本的编译环境应该已经包括了Python,但Mac系统最好在上面这个网站下载安装。在Linux系统中可以使用apt-get等工具来安装更新。另外假如系统内有多个Python版本,可能需要将Python的路径添加到配置文件&…

D - F e n d 簡 單 教 學 DOSBOX Easy Shell 【玩DOS游戏的必备软件】

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowD - F e n d 簡 單 教 學■寫 在 前 面自去年無意間接觸到DOSBox…

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]...

目前比较常用的特征提取是提取心电信号的各波形间期长度、波峰高度等,本文是使用ARMA模型对心电信号进行处理,使用其系数来作为特征。一、心拍划分大多伴有异常波形的心律失常信号,通常都会具体表现在单个心拍中,需要对信号进行心…

目睹DNS怪现状 本地对DNS的设定故障分析

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowDNS(Domain Name System)在tcp/ip网络中&…

python文件输入符_python文件IO与file操作

1 标准输入输出IO - (1) 打印到屏幕 print() print(self, *args, sep’ ‘, end’n’, fileNone): 把传递的表达式 转换成一个 字符串表达式 known special case of print """ print(value, ..., sep , endn, filesys.stdout, flushFalse) Prints the values to…

和县机电工程学校工业机器人_【校企合作】学校举行工业机器人教学系统捐赠仪式...

点击上方蓝字关注我们12月22日下午,我校与广东诚飞智能科技有限公司在公共实训中心会议室举行了“工业机器人教学系统”捐赠仪式。广东诚飞智能科技有限公司总经理杨成芳、区域经理杨少杰,学校副校长罗红金、教务科科长冯华以及机电专业组教师代表参加了…

TCP三次握手(待细研究)

xu言: 看到一张不错清晰的Tcp三次握手图,收藏 Initiator 发起人 Receiver 接收者 LISTENING 状态xx服务启动后首先处于侦听(LISTENING)状态。 ESTABLISHED 状态ESTABLISHED的意思是建立连接。表示两台机器正在通信。 CLOSE_WAIT…

ubuntu20.04下安装vmshare tools_Go语言的安装与配置-vscode

vscode是比较好用的,虽然goland自带插件但是收费,所以配置vscode虽然麻烦但是也值得。Step1.下载安装vscode和golangDownload Visual Studio Code - Mac, Linux, Windows​code.visualstudio.comThe Go Programming Language​golang.google.cnnext step…

小说中人称转换作用_长篇儿童小说《合欢》:一树红绒落马缨

浙江少年儿童出版社出版肖复兴的第二部长篇儿童小说《合欢》,因对儿童独立人格的自觉尊重与强调,以及对人物复杂内心世界的深度开掘与勘探,回应了“儿童的被发现”这一重要课题。《合欢》不仅是作者对“远逝的童年”的一次深情回眸&#xff0…