jenkins pipline 如何禁止任务并行
背景: 我测试的一个项目CI包括好几个步骤,但是有的步骤是不能并行的,否则会互相影响
处理过程:
【方案一】:不推荐此方案
在每个步骤里面的shell脚本中加进程判断
示例:比如本任务有4个步骤,第2个步骤启动的时候会启动进程test2
那我在执行第2个步骤之前先判定进程test2是否存在,如果存在就循环等待直到进程消失
结果:虽然解决了大部分情况下的任务冲突,但是在两个任务在短时间内相继启动还是出问题了,原因是第2个步骤进程终止后还有后续生成报告的操作,这个需要步骤2生成在报告目录的数据,但我的脚本设置的是步骤2一旦启动就清空报告目录,这就导致上一个任务进程释放但还没来的及读取报告时,报告数据就被并行的任务清掉了,最终失败
【方案二】:推荐方案
解决方案:给步骤设置锁,让任务无法并行
在Jenkinsfile里面给步骤加锁,这样加锁的步骤就只能串行了,从而避免上述影响
注意: 只要锁名相同的步骤都会禁止并行,而不单禁止同一个state并行
示例代码:
stages {
stage('stage-one') {
steps {
echo "step 1"
}
}
stage('stage-two') {
steps {
lock ('Lock Stage-Two'){
echo "step two"
}
}
}
}
jenkins pipline 如何禁止任务并行的更多相关文章
- jenkins pipline 几个注意细节
新建jenkins pipline 1)pipeline的脚本语法要正确,sonarqube的projectKey需要做相应的修改 2)先执行一次构建,会报错 3)进到jenkins workspac ...
- 持续集成工具之Jenkins pipline简单示例
前文我们主要聊了下jenkins的插件安装.用户及权限管理.邮件发送.配置凭证到gitlab上拉取项目和创建普通job:回顾请参考https://www.cnblogs.com/qiuhom-1874 ...
- ubuntu 16.04 jenkins pipline的实现 最终docker启动服务
准备工作:两台虚拟机A:192.168.1.60 B:192.168.1.61 C:一个存放代码的代码库(github)A:jenkins git docker openssh-server(ssh) ...
- jenkins pipline 和 jenkinsfile
Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中.Jenkins Pipeline 提供了一套可扩展的 ...
- jenkins pipline和jenkinsfile
Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中. Jenkins Pipeline 提供了一套可扩展 ...
- 使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知
一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...
- jenkins pipline 发送邮件
推荐一个好网站https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html 获取git 用户信息// Get checkout output value ...
- Jenkins Pipline语法
引用自:http://baijiahao.baidu.com/s?id=1582812185263227836&wfr=spider&for=pc 引用自:https://www.cn ...
- jenkins pipline 用法收集
1.下载多个项目 node { stage('clone'){ dir('test1'){ checkout([$class: 'GitSCM', branches: [[name: '*/maste ...
随机推荐
- Couchdb垂直权限绕过到命令执行
0x00couchdb简介 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查 ...
- 循环删除List集合的元素
之前在使用list集合循环删除元素的时候,竟然出现了集合内的元素不能删除成功的问题,之后整理了一下,发现大有玄机! 1.如果指定了list的size大小,会出现下标越界异常 List<Strin ...
- 自用浏览器的 User-agent 表
浏览器版本号见请求. 浏览器 User-agent Internet Explorer Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11. ...
- 关于Dijk采访的一些感想
有效的程序员不应该浪费很多时间用于程序调试,他们应该一开始就不要把故障引入! 反复,一遍又一遍的尝试,真的会让人心烦,对于有的问题解决不了,其实有很多原因,写出来的程序其实是非常考验人的细节处理能力的 ...
- 小白的java学习之路 “ 数组”
数组 一.什么是数组: 数组是一个变量,存储相同数据类型的一组数据 声明一个变量就是在内存空间划出一块合适的空间 声明一个数组就是在内存空间划出一串连续的空间 二.数组基本要素: 标识符:数组的名称, ...
- Dynamics CRM 365中结合注释和WebApi实现图片上传
首先需要在实体上使用注释,然后在窗体上引用WebResource. WebResource的代码: <!DOCTYPE html> <html> <head> &l ...
- [Python] for in单行循环生成dict
for循环体内的语句只有一行的情况的下,可以简化for循环的书写,尤其当你需要生成一个可迭代对象的时候 d = {x:x*10 for x in range(3)} print(d) d1 = [x* ...
- DOM节点的属性和方法
DOM DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model).它的作用是将网页转为一个 JavaScript 对象,从而可以用脚本进行 ...
- Pycharm有必要改的几个默认设置项
最近在用Pycharm学习Python的时候,总有两个地方感觉不是很舒服,比如调用方法的时候区分大小写(thread就不会出现Thread,string就不会出现String)等,这让我稍稍有点不舒服 ...
- 杜教筛BM
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> # ...