没有可用软件包 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,一经查实,立即删除!

相关文章

使用ping命令检查路由之解惑

网络工程师都会用到Ping,它是 检查 路由问题的有效办法。但也常听工程师抱怨:不可能,怎么会不通呢? 这样的困惑一般发生在自认为路由设置正确的时候。举几个笔者遇到的问题,欢迎大家补充。 最简单的三种情况&#xff…

什么是慢查询?如何通过慢查询日志优化?

日志就跟人们写的日记一样,记录着过往的事情。但是人的日记是主观的(记自己想记的内容),而数据库的日志是客观的,根据记录内容分为以下好几种日志: a、错误日志:记录启动、运行或停止mysqld时出…

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

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

动漫字幕组 集合

贪婪大陆被非法收购始末 http://blog.csdn.net/freexploit/archive/2005/11/21/534050.aspx预测已经实现~~还好还好先把各字幕组的论坛 地址找了来~~像什么 花园 漫游的这些 大家是熟悉的不能在熟悉了~~所以我就没打上去了~~有不全的请朋友们自己找找吧----------~.~而且现在几…

性能度量RMSE

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

最近幻影的两个ARP欺骗工具 挺不错的

arpspoof 3.1b主要功能:ARP欺骗过程中进行数据修改,实现会话劫持攻击说明: 本程序公开源代码,为了换取更多朋友的指教实例: 欺骗192.168.0.108访问百度网站的全过程(注:#后是我加的注释)效果: 1…

python中math库最大值_python-math库解析

math库的数学常数(共4个) math.pi 表示Π,圆周率,值为3.141592653589…… math.e 表示e,自然对数,值为2.718…… math.inf 表示正无穷大,负无穷大为-math.inf math.nan 表示非浮点数标记 math库…

idea启动项目没错,可是debug却一直启动不起来

原因很简单: 断电打的太多了导致的,去掉不需要的断点之后就好了! 转载于:https://www.cnblogs.com/sllcom/p/9327908.html

一个牛人的经历---北京八年——从极度贫困到财务自由

一个牛人的经历---北京八年——从极度贫困到财务自由 第一章: 八年巨变 我1996年7月从东北的一所曾经非常有名的工科大学毕业,快毕业时听了一位同乡校 友姐姐的话“宁到好地方,不到好单位”,经过一番各式各样的努力,96…

python绘制不带颜色曲线图_Python画曲线图

画图方法 from matplotlib import font_manager import numpy as np import matplotlib . pyplot as plt zh_fontfont_manager . FontProperties ( fnamerc:\windows\fonts\simsun.ttc , size14 ) # create a arr x1[ x * 0.5 for x in range( 1 , 20 )] y1x1 # create a arr x…

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

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

那年的夏天很笛子

原文:salance-moon.spaces.live.com在某个阶段,我想应该是时候把至今为止影响自己走上美工&设计&程序之路的历程整理一下了。但是下笔的时候才发现,其实这几乎成了我童年的回忆录,因为程序暂且不算,美工&设…

python数据的格式输出_python

本文主要由Python String Format 一文翻译整理而来,在python中使用 % 进行格式化字符串由来已久,不过在python2.7 的版本中引入了新的格式化字符串的方法。虽然%号的方式依旧可用,不过在[PEP-3101] 中已有含蓄的警告称将完全淘汰python2.6之前…

[kafka]kafka集群实践

环境 iphostnameserver_id192.168.1.111UAT042192.168.1.112UAT031192.168.1.102UAT053配置hosts: 192.168.1.112 UAT03 192.168.1.111 UAT04 192.168.1.102 UAT05 安装jdk # rpm -ivh jdk-8u65-linux-x64.rpm # java -version java version "1.8.0_65" Java(TM) SE …

互联网盈利模式77种创新 【 很八股的标题,不过内容还是可以参考一下的 】

http://it.icxo.com/htmlnews/2006/05/26/854682.htm当整个世界都在为互联网喝彩的时候,人们心中往往都会进行这样的思考--我怎样才能在互联网上获得财富?其实,这个问题是没有人能够回答的,因为可以回答的人正在为获得财富忙得不可…

.gitignore文件_Java小白入门,Git忽略文件.gitignore详解

在工程中,并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。Git 忽略规则优…

Xamarin Essentials教程磁力计Magnetometer

Xamarin Essentials教程磁力计Magnetometer磁力计也叫地磁、磁感器,可用于测试磁场强度和方向。在手持设备中,通过磁力计可以计算设备的左右、前后倾斜角度,广泛应用于手机各种的应用中。在Xamarin中,开发者可以使用Xamarin.Essen…

python 字符串截取_Python 字符串操作实现代码(截取/替换/查找/分割)

Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾。 # 例1:字符串截取 str 12345678 print str[0:1] >> 1 # 输出str位…

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

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

XYZ DOWN-电子书

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowC Primer 中文第三版 http://dl5.mydown.com/test/ziliao/at2004…