Jenkins重复并平行地运行阶段,直到另一个阶段完成

ax6ht2ek  于 2022-12-22  发布在  Jenkins
关注(0)|答案(1)|浏览(172)
stage("Run A and Run B") {
  parallel {
    stage('A') {

    }
    stage('B') {

    }
  }
}

上面的设置将运行阶段A和B并行。但我正在寻找一种方法来运行B重复每1分钟,直到阶段A已经完成。有人能建议我如何调整这一点?
或者,如果有某种方法可以使阶段A的状态进入阶段B,这就满足了我的需要。
对于任何好奇的人,我的用例是:我在阶段A上运行了一些测试,这将花费几个小时,阶段B有一些代码可以压缩测试输出中的最新报告,并将其推送到远程位置

qzlgjiam

qzlgjiam1#

您可以使用全局变量来实现所需的功能。
变量将由第一并行级更新,第一并行级将使用该变量来发信号通知它已经完成运行,同时变量将由第二级采样以验证执行是否应当继续。
例如:

def running = true

pipeline {
    ...
    ...
    stage("Run A and Run B") {
    parallel  {
        stage('A') {
           // Run your stage A code
           // When finished update the running parameter
           running = false
        }
        stage('B') {
            while (running){
                // Run your stage B code as long as stage A is running
                sleep 60
            }
        }
    }
}

相关问题