背景: 我测试的一个项目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"
        }
      }
    }

}

 

相关文章:

  • 2021-07-12
  • 2021-11-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-05
  • 2021-08-07
猜你喜欢
  • 2021-09-30
  • 2022-01-21
  • 2021-12-05
  • 2021-11-30
  • 2021-10-18
  • 2021-11-08
相关资源
相似解决方案