当前位置: 首页 > 面试题库 >

如果步骤不稳定,Jenkins管道将失败

拓拔谭三
2023-03-14
问题内容

当前,当maven-job不稳定(黄色)时,我的管道失败(红色)。

node {
    stage 'Unit/SQL-Tests'
    parallel (
       phase1: { build 'Unit-Tests' }, // maven
       phase2: { build 'SQL-Tests' } // shell
    )
    stage 'Integration-Tests'
    build 'Integration-Tests' // maven
}

在此示例中,作业单元测试的结果不稳定,但在管道中显示为失败。

如何更改Jobs / Pipeline /Jenkins,使(1)管道步骤不稳定而不是失败,以及(2)管道状态不稳定而不是失败。

我尝试添加MAVEN_OPTS参数-Dmaven.test.failure.ignore=true,但没有解决问题。我不确定如何包装build'Unit-Test'成可以捕获和处理结果的逻辑。

使用这种逻辑添加子管道并不能解决问题,因为没有选项可以从Subversion检出(该选项在常规Maven作业中可用)。如果可能的话,我不想使用命令行结帐。


问题答案:

无论步骤是不稳定还是失败,脚本中的最终构建结果都将失败。

您可以在默认情况下将传播添加为false,以避免失败。

def result = build job: 'test', propagate: false

流程的最后,您可以根据从“结果”变量中获得的结果来判断最终结果。

例如

currentBuild.result='UNSTABLE'

这是一个详细的示例, 如何在Pipeline中设置当前构建结果



 类似资料:
  • 我有一个带有、、等的声明性Jenkins管道。如果设置生成不稳定/失败,我想停止运行。 我知道,当构建未成功时,我可以使用停止运行中的步骤,但无法找到一种方法,在不运行以下阶段的情况下退出管道 以下是我所拥有的: 如果阶段3将执行跳过阶段2 注意:我不能包括阶段2/3/...阶段1中的步骤。应该是那样的。基于构建参数第2/3/4阶段...将在第1阶段之后调用

  • 所以我用这个脚本创建了一个新的管道(直接粘贴到Jenkins,而不是在SCM中): 我运行了它,什么也没有发生,工作没有收到一个新的参数,即使它收到了,我也不明白为什么我可能需要这个。谁能解释一下吗? Update1:我尝试将一个带有属性步骤的虚拟管道放入我的git repo,然后配置一个多分支作业。

  • 问题内容: 仅在构建特定分支时,如何运行构建步骤/阶段? 例如,仅在调用分支的情况下才运行部署步骤,而其他所有都保持不变。 问题答案: 在声明性管道语法中执行相同的操作,以下是一些示例: 出现更有效的方法-https: //issues.jenkins- ci.org/browse/JENKINS-41187 另请 参阅- https://jenkins.io/doc/book/pipeline/

  • 仅当构建特定分支时,如何运行构建步骤/阶段? 例如,仅当分支被称为时才运行部署步骤,其他操作保持不变。

  • 根据Andrew Bayer的说法,您不应该向其他人注入声明性管道。将来可能会有人支持它,但可能不会。 我目前正在尝试在管道中启动一个管道,但我想知道我需要做什么才能使它工作。jenkins网页上的文档说明,如果新作业或管道与第一个作业或管道位于同一文件夹中,则可以从直接名称或绝对路径调用它。我已经尝试了所有不同的方法,目前我正在尝试一个文件的绝对路径,我刚刚检查过它一秒钟前存在,但它说它不存在。

  • 在Jenkins管道中,我使用构建步骤触发其他几个作业,并向其传递一些参数。除了管道之外,我在可视化我触发的不同工作时遇到了问题。我已经设置了Jenkins Delivery Pipeline插件,但是它的文档非常模糊,我只能可视化管道中的步骤,尽管用阶段和任务名称标记作业。 例子: 我在Jenkins中有两个作业作为管道/工作流作业,具有以下管道脚本: 工作坊: 作业栏: 我如何使它也显示在工作