持续集成高级篇之Jenkins资源调度

之前的示例我们主要关注点在于功能的实现,都是在一个节点的完成了.有了多个节点后,必须涉及到资源的调度问题.本节我们讲解在创建任务时与资源调度的有关选项以及一些平时没有注意到的但在生产环境需要精细控制的选项.

我们随便创建一个自由式风格任务,这里主要讲解General里的一些选项

Restrict where this project can be run

限制项目运行的节点,勾选后出现Label Expression选项供输入要限制此任务运行节点的标签,可以指定多个标签,也可以使用一些逻辑运算符以构建更为复杂的标签选择.

此选项除了可以输入标签外,也可以输入节点的名称.

比如输入的是master则限定此任务在master节点运行.

支持的运算符:

(表达式)用于复杂的表达式,类似编程语言中的括号

!表达式,逻辑运算,例如!linux则任务运行在不包含linux标签的机器上

a&&b 逻辑且

a||b逻辑或

a -> b 这里举个例子说明它的使用方法.比如windows->x64则限定如果节点运行在windows机器上,则必须运行在x64类型的windows机器上(即一节点同时包含windows x64两个label),如果不是windows机器,则不必是x64系统.

a <-> b 这里仍然举例说明.比如windows<->datacenter1,如果主机是windows系统,则必须运行在datacenter1机房,如果不是windows系统,则必须不能运行在datacenter1机房.

其它示例:

linux-machine-42,任务运行在主机名为linux-machine-42的节点上,或者标签为linux-machine-42的节点上

windows && jdk9,任务必须运行在windows主机上,并且jdk版本为9(需要注意的是这里仅仅是逻辑上的限制,实际上我们为一个节点打上jdk9标签,这台机器并不一定安装了jdk9,这里还是需要我们人为控制)

postgres && !vm && (linux || freebsd) 运行在有postgres数据库的linux或者freebsd系统类型,并且不是虚拟机的节点上.

This build requires lockable resources

此构建需要锁定的资源,锁定的资源由我们在全局配置里使用.

创建lockable resources

进入manage jenkins->system configuration,然后向下滚动找到Lockable Resources Manager,然后点击Add lockable resource按钮.出现输入框,下面讲解每一项的含义

Name lockable资源的名称,只有定义的名称创建项目的时候才可以使用它,比如printers定义了一个名叫作printers类型的lockable资源

Description 描述,可以随便添加一些描述信息

Labels 要选择的节点,多个之间用空格分割.比如printer1 printer2 printer3

Reserved by 被某个对象预留,这里可以填写任意名称,如果有值,则资源不可用,此选项用于对资源的维护,比如我们要对安装了打印机的主机进行维护,则可以在这里填写一个值,此时任务不能使用此资源,直到值被清除.

我们返回jenkins主界面,点击左侧的Lockable Resources就可以看到有哪些lockable resource,并且可以看到资源的状态

新建一个项目,general选项里选择This build requires lockable resources便可以使用lockable资源,有Resources和labels两个选项可以选,此两个选项是互斥的,即只能选择一个,比如我们可以在Resources里指定printers,或者在labels里指定printer1或者printer2,具体要根据要锁定的资源而定.如果仅仅要锁定一个打印机,则可以用resoures,如果想要锁定某个特定类型的资源,则可以使用lable.

我们构建完任务后,点击构建号进入详细构建信息页面,点击左侧的lockable resources则可以看到本次构建锁定的资源.

这里说锁定资源,是指此构建对资源的独占,如果其它构建也锁定了相同的资源,则需要排除等待.

由于jenkins里的资源都是节点资源,即没有其它类型的资源,因此使用lockable resources能完成的工作使用label选择也同样能完成,使用kockable resources的好处在于对资源的管理更为方便,有些资源是有限的,如果lable过于复杂很难理清关系,而lockable resoure则有单独的资源管理界面,方便对这些关键的资源进行管理.

高级选项之Quiet period

勾选后,会出现Quiet period,值默认为秒.此选项的意义为在实践中有些用户往往会在提交git后又马上发现问题,紧接着进行数次提交.这样就会触发多个hook事件,导致多次构建,如果指定一个Quiet periodjenkins中待处理的队列中在一个任务添加后的Quiet period范围内再添加任务将不会被加入到队列.保证一个相关的提交只构建一次,防止不必要的资源浪费.

高级选项之Retry Count

此选项也是对SCM的,如果一个构建使用了SCM(git,svn等),则在拉取代码失败后会进行若干次重试,如果在指定的重试次数用完后仍然未能拉取,则此次构建标记为失败.

此选项如果不勾选默认的行为是如果拉取代码失败,则任务马上标识为失败,相当于Retry count值设置为0

高级选项之Execute concurrent builds if necessary

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspdxx.html