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"
            }
          }
        }
    
    }
    
    
  • 相关阅读:
    设计模式--单例模式(Singleton)
    C# 和.Net 特性
    Fiddler 教程
    史铁生遗作:昼信基督夜信佛
    如何实现早日退休理想
    Linux 常用
    Golang 读书
    Python 读书
    RbMQ 简介
    UML 简介
  • 原文地址:https://www.cnblogs.com/smileyes/p/10181236.html
Copyright © 2011-2022 走看看