• 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"
            }
          }
        }
    
    }
    
    
  • 相关阅读:
    spring-cloud服务器雪崩效应
    zookeeper集群
    Hash表的扩容(转载)
    算法时间复杂度和空间复杂度的计算
    Java 8 新特性
    jdk8 流操作
    jdk8十大特性并代码demo(转)
    hashmap实现原理2
    hashmap实现原理
    Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行
  • 原文地址:https://www.cnblogs.com/smileyes/p/10181236.html
Copyright © 2020-2023  润新知