代码之家  ›  专栏  ›  技术社区  ›  Daniel Murali

重试阶段将生成标记为失败

  •  2
  • Daniel Murali  · 技术社区  · 6 年前

    我有一些阶段需要重试,比如:

    阶段(“部署”)。{
    选项{
    重试(2)
    }
    步骤{
    脚本{
    <…截图…>
    }
    }
    }
    

    问题是,当这些阶段在一次尝试中失败时,即使在第二次尝试中成功,它们也将被标记为失败。

    请注意,所有阶段都标记为成功,只有生成标记为失败。在图像中,重试阶段突出显示:

    这是正常的吗?如何忽略失败的尝试?

    问题是,当这些阶段在一次尝试中失败时,即使在第二次尝试中成功,它们也将被标记为失败。

    请注意,所有阶段都标记为成功,只有生成标记为失败。在图像中,重试阶段突出显示: Stages

    这是正常的吗?如何忽略失败的尝试?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Daniel Murali    6 年前

    如果有人遇到同样的问题,我会使用自己的Try/Catch函数,将错误打印为红色:

    def retry(retries, block) {
        while(retries > 0) {
            retries--
            try {           
                block(retries)
                return
            } catch(Exception exception) {
                printf "######################################\n" + 
                       "\u001B[31mFAILED!!! Retries left = " + retries + "\n" +
                       "ERROR:\n" + exception.toString() + "\n" +
                       "STACK TRACE:\n" + exception.getStackTrace() + "\u001B[0m\n" +        
                       "######################################"
                if(retries == 0) {
                    throw exception
                }
            }
        }
    }
    

    它可以这样使用:

    retry(3) { retriesLeft ->
        printf "retries left: ${retriesLeft}"
    }