zoukankan      html  css  js  c++  java
  • 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"
            }
          }
        }
    
    }
    
    
  • 相关阅读:
    (40)C#windows服务控制
    (6)C#事务处理
    (1)sqlite基础
    bzoj 2456 mode
    bzoj 2763 [JLOI2011]飞行路线
    bzoj1010[HNOI2008] 玩具装箱toy
    bzoj1034 [ZJOI2008]泡泡堂BNB
    [bzoj1059] [ZJOI2007] 矩阵游戏 (二分图匹配)
    [bzoj1066] [SCOI2007] 蜥蜴
    bzoj1072 [SCOI2007]排列perm
  • 原文地址:https://www.cnblogs.com/smileyes/p/10181236.html
Copyright © 2011-2022 走看看