gpt4 book ai didi

jenkins - 如何检测 Jenkins 声明式管道中哪个并行阶段失败?

转载 作者:行者123 更新时间:2023-12-04 21:32:01 26 4
gpt4 key购买 nike

我的 Jenkins 管道并行运行多个任务。似乎如果一个阶段失败,所有后续阶段都将运行它们的 failure发布阻止(无论他们是否真的失败了)。我不知道这是设计使然还是我做错了什么。

注意:此管道在 Windows 节点上运行,因此 bat('exit /b 1')

pipeline {
agent any

stages {
stage('Parallel steps') {
parallel {
stage('Successful stage') {
steps {
script { sleep 10 }
}
post {
failure {
echo('detected failure: Successful stage')
}
}
}
stage('Failure stage') {
steps {
script { bat('exit /b 1') }
}
post {
failure {
echo('detected failure: Failure stage')
}
}
}
}
}
}
}

在上面的管道中,只有“失败阶段”失败,但在输出中我看到了这一点,表明 failure两个步骤都有条件执行!
Started by user Doe, John
Running on WINDOWS_NODE in D:\workspace
[Successful stage] Sleeping for 10 sec
[Failure stage] [test] Running batch script
[Failure stage] D:\workspace>exit /b 1
Post stage
[Pipeline] [Failure stage] echo
[Failure stage] detected failure: Failure stage
[Failure stage] Failed in branch Failure stage
Post stage
[Pipeline] [Successful stage] echo
[Successful stage] detected failure: Successful stage
ERROR: script returned exit code 1
Finished: FAILURE

我检测哪个并行阶段失败并将其报告给整个管道的最佳方法是什么?

最佳答案

看起来这是一个 known bug使用声明式管道。我不得不放弃使用内置的 post->failure 块并使用 try/catch 代替,它有自己的问题:

  • 您必须捕获并重新抛出错误才能使阶段适本地失败。
  • UI 可能会有些困惑,因为失败的步骤不再以红色突出显示(但错误消息仍在日志中)。
  • 代码可读性稍差。

  • 此代码正常工作。只有失败的阶段回显“检测到的失败”而不是两者。
    pipeline {
    agent any

    stages {
    stage('Parallel steps') {
    parallel {
    stage('Successful stage') {
    steps {
    script {
    try {
    sleep 10
    } catch (e) {
    echo('detected failure: Successful stage')
    throw(e)
    }
    }
    }
    }
    stage('Failure stage') {
    steps {
    script {
    try {
    bat('exit /b 1')
    } catch (e) {
    echo('detected failure: Failure stage')
    throw(e)
    }
    }
    }
    }
    }
    }
    }
    }

    关于jenkins - 如何检测 Jenkins 声明式管道中哪个并行阶段失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370409/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com