50-Jenkins-Lockable Resources插件实现资源锁定
Posted 爱学习de测试小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了50-Jenkins-Lockable Resources插件实现资源锁定相关的知识,希望对你有一定的参考价值。
Lockable Resources插件实现资源锁定
前言
- 用来阻止多个构建在同一时间试图使用同一个资源。这里的资源可能是一个节点、一个代理节点、一组节点或代理节点的集合,或者仅仅是一个用于上锁的名字。如果指定的资源没有在全局配置中定义,那么它将会被自动地添加到系统中。
安装插件
- Manage Jenkins --> Mangage Plugins --> 可选插件 --> 输出框输入 Lockable Resources
使用插件
资源配置
- Manage jenkins --> System configuration --> 找到Lockable Resources Manager
参数说明:
- Name :资源的名称,只有定义的名称创建项目的时候才可以使用它,比如printers定义了一个名叫作printers类型的lockable资源
- Description:描述,可以添加对资源的描述信息
- Labels:要选择的节点,多个之间用空格分割.比如printer1 printer2 printer3
- Reserved by:被某个对象预留,这里可以填写任意名称,如果有值,则资源不可用,此选项用于对资源的维护
Pipeline中使用
lock(inversePrecedence: true, label: 'printer1', quantity: 1, variable: 'resource_name')
参数说明:
- label:在全局设置中定义的要锁定的资源的标签
- quantity:在全局设置中定义的具有指定标签的资源被锁定的数量。可以把这个理解成“我必须拥有多少这种资源才能继续前行?” 如果你指定了标签但没有指定数量,那么标记该标签的所有资源都会被锁定,也就是空值或0表示锁定所有匹配的资源
- variable:获取资源名称
- inversePrecedence:表示是否可以后来居上,后进先出;如果这个参数被设置为true,那么最新的构建优先获得资源(资源可用时)。否则,所有构建将按照申请资源的顺序依次获得资源
- stage 中使用
- 新建两个Pipeline – pipeline-lock
pipeline
agent any
stages
stage("Lock resource")
steps
script
lock(label: 'printer1',quantity: 1 ,variable: "resource_name")
echo "Locked resource name is $env.resource_name"
sleep 30
sh 'echo hello world!'
- 新建两个Pipeline – pipeline-lock-block
pipeline
agent any
stages
stage("Lock resource")
steps
script
lock(label: 'printer1',quantity: 1 ,variable: "resource_name")
echo "Locked resource name is $env.resource_name"
sh 'echo hello world!'
- 先运行pipeline-lock,再运行 pipeline-lock-block,下图为日志输出
- option中使用
- pipeline-lock
pipeline
agent any
options
lock(inversePrecedence: true, label: 'printer1', quantity: 1, variable: 'resource_name')
stages
stage("Lock resource")
steps
script
echo "Locked resource name is $env.resource_name"
sleep 30
sh 'echo hello world!'
- pipeline-lock-block
pipeline
agent any
options
lock(inversePrecedence: true, label: 'printer1', quantity: 1, variable: 'resource_name')
stages
stage("Lock resource")
steps
script
echo "Locked resource name is $env.resource_name"
sh 'echo hello world!'
- 日志输出
以上是关于50-Jenkins-Lockable Resources插件实现资源锁定的主要内容,如果未能解决你的问题,请参考以下文章
Flask-Restful解决跨域问题No 'Access-Control-Allow-Origin' header is present on the requested resou