背景: 我测试的一个项目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 如何禁止任务并行的更多相关文章

  1. jenkins pipline 几个注意细节

    新建jenkins pipline 1)pipeline的脚本语法要正确,sonarqube的projectKey需要做相应的修改 2)先执行一次构建,会报错 3)进到jenkins workspac ...

  2. 持续集成工具之Jenkins pipline简单示例

    前文我们主要聊了下jenkins的插件安装.用户及权限管理.邮件发送.配置凭证到gitlab上拉取项目和创建普通job:回顾请参考https://www.cnblogs.com/qiuhom-1874 ...

  3. 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) ...

  4. jenkins pipline 和 jenkinsfile

    Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中.Jenkins Pipeline 提供了一套可扩展的 ...

  5. jenkins pipline和jenkinsfile

    Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中. Jenkins Pipeline 提供了一套可扩展 ...

  6. 使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知

    一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...

  7. jenkins pipline 发送邮件

    推荐一个好网站https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html 获取git 用户信息// Get checkout output value ...

  8. Jenkins Pipline语法

    引用自:http://baijiahao.baidu.com/s?id=1582812185263227836&wfr=spider&for=pc 引用自:https://www.cn ...

  9. jenkins pipline 用法收集

    1.下载多个项目 node { stage('clone'){ dir('test1'){ checkout([$class: 'GitSCM', branches: [[name: '*/maste ...

随机推荐

  1. Electron+Vue – 基础学习(1): 创建项目

    Electron 和 Vue 都是干啥的,就不做过多介绍了,可以去官网瞅瞅.下面总结 Electron+Vue 创建项目,Electron + Vue 创建项目实际上相当于:创建Vue项目 + Ele ...

  2. 浅谈mysql触发器

    什么是触发器?简单的说,就是一张表发生了某件事(插入.删除.更新操作),然后自动触发了预先编写好的若干条SQL语句的执行.触发器本质也是存储过程,只是不需要手动调用,触发某事件时自动调用.触发器里的S ...

  3. C#中的异步编程--探索await与async关键字的奥妙之处,原来理解和使用异步编程可以这么简单

    前言 await与async是C#5.0推出的新语法,关于await与async有很多文章讲解.但看完后有没有这样一种感觉,感觉这东西像是不错,但好像就是看不太懂,也不清楚该怎么使用.虽然偶有接触,但 ...

  4. Photoshop Elements2020强势来袭,教你三秒钟拯救闭眼照

    Photoshop Elements2020强势来袭,一系列的黑科技让设计师和路人都惊叹不已!若某人的闭眼成为一张集体照的败笔,那该如何挽回? 想要挽救闭眼照?听起来很高大上,很困难?不,Photos ...

  5. C#排序算法的实现---冒泡排序

    一.算法原理 冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对 ...

  6. Java各种类

    1.Object类 equals方法 2.Date类 构造方法 成员方法 DateFormat类 Calendar类 3.System类 StringBuilder原理 构造方法 toString方法 ...

  7. CF566C Logistical Questions(10-1)

    题意 \(n\)个点的树,有点权,有边权,\(f(x)=\sum\limits_{i=1}^n w_idis(i,x)^{1.5}\),求最小的\(f(x)\)的\(x\) 单独考虑一条链,顺序编号, ...

  8. 积分题1之来自G.Han的一道积分题

    今天,收到G.Han的提问,第一个是计算积分 \[\int_0^{\infty}{\frac{\ln x}{(x^2+1)^n}dx}\]顿时不明觉厉,然后在宝典<Table of Integr ...

  9. jmeter测试出现端口占用

    原文地址:https://www.cnblogs.com/deepSleeping/p/12067654.html Jmeter测试会出现端口占用情况 这边在这里做个记录,每次都要百度查询,刚好需要整 ...

  10. MySQL数据库渗透及漏洞利用总结

    Mysql数据库是目前世界上使用最为广泛的数据库之一,很多著名公司和站点都使用Mysql作为其数据库支撑,目前很多架构都以Mysql作为数据库管理系统,例如LAMP.和WAMP等,在针对网站渗透中,很 ...