Jenkins 估算构建时间的逻辑和解决方案

110次阅读
没有评论

问题描述

在升级到 Jenkins v2.207.1 后,发现在流水线作业的构建时间估算上出现了问题。在过去,他们在悬停在蓝色进度条上时,可以看到构建时间的估算,但现在他们只看到了蓝白相间的进度条,估算时间显示为 N/A。用户认为这个问题可能只出现在流水线作业上,对于自由风格作业并没有看到这个问题。

用户想要了解 Jenkins 计算这些估算时间的逻辑是什么,还有需要运行多少个构建才能让这些时间重新显示出来。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

Jenkins 在计算构建时间估算时,使用了一定的逻辑来选择候选构建,并根据这些构建的持续时间进行计算。具体的逻辑可以在 Jenkins 源代码中找到。下面将介绍 Jenkins 计算构建时间估算的逻辑,并提供两种解决方案,以帮助你解决估算时间不显示的问题。

Jenkins 构建时间估算逻辑

Jenkins 使用最近的3个成功或不稳定构建作为候选构建来计算估算时间。如果在最近的6个构建中找不到3个成功或不稳定构建,它将使用最近的1个或更多已完成(非中止)构建。然后,它将候选构建的总持续时间简单地除以候选构建数量,得到估算时间的平均值。

以下是源代码片段,该代码片段说明了这个逻辑,可以在 Jenkins 仓库的 Job.java 文件中找到:

protected List<RunT> getEstimatedDurationCandidates() {
    // 逻辑实现
}

public long getEstimatedDuration() {
    // 逻辑实现
}

解决方案1:使用 Jenkins 的默认逻辑

根据 Jenkins 的默认逻辑,你可以等待足够多的构建运行,以便候选构建的数量达到满足估算时间逻辑的要求。这可能需要一些时间,但是一旦有足够多的构建运行,估算时间就应该能够正常显示。

解决方案2:检查插件兼容性

有时候,升级 Jenkins 后,某些插件可能与其他 Jenkins 组件存在兼容性问题,导致奇怪的错误。建议你检查已安装的插件,确保它们与你当前使用的 Jenkins 版本兼容。特别是一些与构建和进度条相关的插件,可能会影响估算时间的显示。

解决方案3:更新 Jenkins 插件

如果估算时间仍然不显示,可以尝试更新相关的 Jenkins 插件,以确保使用的插件版本与当前 Jenkins 版本兼容。更新插件可能会修复已知的问题和错误。

总结

Jenkins 使用一定的逻辑来计算构建时间的估算,根据最近的成功或不稳定构建来进行计算。如果估算时间不显示,你可以尝试等待足够多的构建运行,检查插件兼容性,或更新相关的 Jenkins 插件来解决问题。希望这些解决方案能够帮助你恢复估算时间的显示。

请根据你的具体情况选择合适的解决方案,并在操作前做好备份工作。如有疑问或需要进一步帮助,请随时提问。

注意:以上解决方案仅供参考,实际操作时请谨慎处理,以免对系统产生不良影响。

正文完