Jenkins 声明性管道 - 如果不满足某些条件而不是跳过一个阶段,如何中止整个构建?
Posted
技术标签:
【中文标题】Jenkins 声明性管道 - 如果不满足某些条件而不是跳过一个阶段,如何中止整个构建?【英文标题】:Jenkins declarative pipeline - How to abort whole build if certain conditions are not met instead of skipping a stage? 【发布时间】:2021-09-03 05:40:01 【问题描述】:我可以在 jenkins 声明式管道中成功使用 when 条件跳过一个阶段,但如果不满足一组条件,我想提前中止构建。我尝试将 when 块放在***内部阶段和外部阶段,但它给出的语法错误分别为“预期阶段”和“未定义部分”。谁能建议我如何使它工作?
when
anyOf
not
equals expected: true, actual: params.boolean_parameter
not
equals expected: '', actual: params.string_parameter
【问题讨论】:
这很可能是不可能的。您可能不想在这些情况下触发构建。 您可以在阶段开始的脚本块中使用 try/catch 块。 support.cloudbees.com/hc/en-us/articles/… 【参考方案1】:在声明式管道中,when
指令只能用于阶段。
为了解决您的问题,您可以创建一个用于中止管道的虚拟阶段,以防不符合条件的情况,在该步骤中,您可以使用常规的 when
指令,并在阶段的步骤中使用 error
关键字使用相关消息中止构建(请参阅error 文档)。
比如:
pipeline
agent any
stages
stage('Validate Conditions')
when
anyOf
not
equals expected: true, actual: params.boolean_parameter
not
equals expected: '', actual: params.string_parameter
steps
error("Aborting the build because conditions are not met")
... // rest of pipeline
这样,如果条件不满足,构建将被中止,但是帖子部分仍将执行,允许您发送通知等,如果需要。
【讨论】:
以上是关于Jenkins 声明性管道 - 如果不满足某些条件而不是跳过一个阶段,如何中止整个构建?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用声明性 Jenkins 管道在同一节点上运行多个阶段?
如何使用变量名作为声明性Jenkins的参数运行ArtifactoryMavenBuild?