首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scripted Jenkins管道,跳过舞台的平行部分

Scripted Jenkins管道,跳过舞台的平行部分
EN

Stack Overflow用户
提问于 2019-12-04 08:32:16
回答 1查看 1.7K关注 0票数 2

我知道,在编写脚本的jenkins管道中,我可以使用Utils.markStageSkippedForConditional将整个阶段标记为跳过,这将使“执行线”在蓝海UI的舞台周围倾斜。

但如果我有一个舞台,里面有平行的任务,比如:

代码语言:javascript
复制
stage('Stage 1') {
  parallel 'Task 1' : {
    node('requirements') {
      doTask1()
    }
  }, 'Task 2' : {
    when (mustDoTask2) { // this 'when' function calls Utils.markStageSkippedForConditional
      node('requirements') {
        doTask2()
      }
    }
  }
}

然后,整个阶段被标记为跳过(我想,考虑到Utils函数的名称),蓝海将管道呈现为从不执行任何并行任务(即使它们确实执行)。

那么,除了Utils.markStageSkippedForConditional之外,我是否可以使用它将单个并行任务标记为跳过呢?

我现在要做的另一个选择是,在“节点”语句中检查并行任务是否应该执行,这是可行的,但是当您查看蓝海的管道时,这些任务似乎总是被执行,这并不理想。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 09:26:42

@PatriceM.建议把每一项任务都放在自己的阶段,这是我目前得到的最好的解决方案:

代码语言:javascript
复制
stage('Stage 1') {
  parallel 'Task 1' : {
    node('requirements') {
      doTask1()
    }
  }, 'Task 2' : {
    stage('Task 2') { // new nested stage that can be marked as skipped by the 'when'
      when (mustDoTask2) {
        node('requirements') {
          doTask2()
        }
      }
    }
  }
}

注意,'Task 2‘并行任务有它自己的阶段。这意味着“什么时候”可以将该阶段标记为跳过,而不是父阶段“阶段1”。没有必要在“Task 1”中添加额外的嵌套阶段,因为它没有可能跳过它的“何时”。

这将在蓝海中以灰色显示跳过的阶段(而不是在它们周围倾斜行),并让日志‘排队等待运行开始’,直到整个运行完成时,它将更改为“此阶段没有步骤”,并显示整个运行的最终日志。这并不是百分之百完美,但显示了实际发生的相当好,所以足够好,现在!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59171846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档