Jenkins Blue Ocean是否缓存流水线脚本?流水线UI旧版本问题求助
嘿,刚好我之前也碰到过类似的Blue Ocean缓存问题,来给你详细解答这两个疑问!
没错,Blue Ocean确实会缓存流水线脚本,主要是为了加快UI加载和流水线解析的速度。具体来说,它的缓存主要存在这两个地方:
- Jenkins服务器本地的缓存目录:通常是
$JENKINS_HOME/caches/blueocean,这里存储的是解析后的流水线定义文件,用来快速渲染Blue Ocean的UI。 - 依赖Jenkins核心的SCM缓存:如果你的流水线脚本(比如Jenkinsfile)存在Git这类版本库中,Blue Ocean会复用Git插件等SCM插件的本地仓库缓存,避免每次都从远程仓库拉取代码。
这种情况几乎都是Blue Ocean的缓存没有及时更新导致的,给你几个亲测有效的解决步骤:
手动清理Blue Ocean本地缓存
登录Jenkins所在的服务器,找到$JENKINS_HOME/caches/blueocean目录,删除里面的所有文件和子文件夹,然后重启Jenkins服务。这个操作能彻底清空旧缓存,强制Blue Ocean重新加载最新的流水线定义。触发流水线重新扫描
在Blue Ocean的流水线页面,点击右上角的三个点(更多操作按钮),选择「重新扫描流水线」(Rescan Pipeline)。这个操作会让Blue Ocean主动从远程仓库拉取最新的Jenkinsfile,跳过本地缓存。检查SCM拉取策略
进入传统视图的流水线配置页面,找到「源码管理」部分,确认你的SCM(比如Git)配置了「每次构建拉取最新代码」的策略——比如勾选「清除本地副本再拉取」或者类似选项,避免Jenkins复用本地缓存的旧代码。更新Blue Ocean插件
旧版本的Blue Ocean插件可能存在缓存逻辑的bug,建议你进入Jenkins的「插件管理」页面,把Blue Ocean相关的所有插件(包括Blue Ocean Core、Pipeline: Blue Ocean等)更新到最新稳定版,很多缓存问题在新版本里已经被修复了。强制触发全新构建
如果直接点击构建还是用旧脚本,可以尝试在构建时添加一个临时参数(如果流水线支持参数化构建的话),或者手动指定拉取最新的分支/commit ID,强制Jenkins重新解析流水线脚本。
内容的提问来源于stack exchange,提问作者Haiaty Varotto

