我知道,在编写脚本的jenkins管道中,我可以使用Utils.markStageSkippedForConditional将整个阶段标记为跳过,这将使“执行线”在蓝海UI的舞台周围倾斜。
但如果我有一个舞台,里面有平行的任务,比如:
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之外,我是否可以使用它将单个并行任务标记为跳过呢?
我现在要做的另一个选择是,在“节点”语句中检查并行任务是否应该执行,这是可行的,但是当您查看蓝海的管道时,这些任务似乎总是被执行,这并不理想。
发布于 2019-12-06 09:26:42
@PatriceM.建议把每一项任务都放在自己的阶段,这是我目前得到的最好的解决方案:
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”中添加额外的嵌套阶段,因为它没有可能跳过它的“何时”。
这将在蓝海中以灰色显示跳过的阶段(而不是在它们周围倾斜行),并让日志‘排队等待运行开始’,直到整个运行完成时,它将更改为“此阶段没有步骤”,并显示整个运行的最终日志。这并不是百分之百完美,但显示了实际发生的相当好,所以足够好,现在!
https://stackoverflow.com/questions/59171846
复制相似问题